В настоящее время я создал класс С++ для целочисленного потока, который просто хранит целое число в частном порядке и имеет общедоступные функции набора, которые используют boost:: mutex, чтобы гарантировать, что к целому числу может быть применено только одно изменение за раз.
Это самый эффективный способ сделать это, мне сообщили, что мьютексы достаточно ресурсоемкие? Класс используется много, очень быстро, поэтому он может быть узким местом...
Google С++ Thread Safe Integer возвращает нечеткие представления и рекомендации по безопасности потоков целых операций на разных архитектурах.
Некоторые говорят, что 32-битный int на 32-битной архитектуре безопасен, но 64 на 32 не обусловлен "выравниванием". Другие говорят, что это специфический компилятор/ОС (что я не сомневаюсь).
Я использую Ubuntu 9.10 на 32-битных машинах, некоторые из них имеют два ядра, поэтому в некоторых случаях потоки могут выполняться одновременно на разных ядрах, и я использую компилятор GCC 4.4 g++.
Спасибо заранее...
Обратите внимание: Ответ, который я обозначил как "правильный", наиболее подходит для моей проблемы - однако в других ответах есть несколько отличных точек, и все они заслуживают внимания!