У меня есть переменная счетчика, к которой будут доступны несколько потоков, которые будут увеличивать/уменьшать ее. Он не должен обновляться несколькими потоками одновременно.Проблема многопоточности C++ - это mutex единственный способ?
Я знаю, что вы можете создать объект мьютекса, который должен быть получен до того, как переменная, о которой идет речь, может быть изменена. Критический раздел в этом случае не подходит, потому что существует более одной функции, которая может изменить рассматриваемую переменную.
Есть ли другое, я могу это сделать без использования мьютекса? Использование мьютекса имеет ограничение производительности (см. http://www.codeguru.com/forum/showthread.php?t=333192). Я считаю, что в Java есть ключевое слово, которое вы можете использовать в объявлении переменной для выполнения этого (называется ли оно «синхронизировано»?), Но есть ли вообще такая вещь в C++?
Я знаю, что volatile не является ключевым словом, которое я ищу.
спасибо.
Критический раздел все равно будет работать здесь, пока счетчик будет доступен только одному процессу. Он может использоваться несколькими функциями с одним и тем же процессом. На самом деле критические разделы быстрее, чем мьютексы. –
re Java: нет, 'synchronized' в java эквивалентно критическому разделу, который отличается от' volatile' и атомного приращения/уменьшения. – finnw