Повышение, концепция мьютекса

Я новичок в многопоточном программировании и не понимаю, как работает Mutex. В руководстве Boost :: Thread говорится:

Мьютексы гарантируют, что только один поток может заблокировать данный мьютекс. Если секция кода окружена блокировкой и разблокировкой мьютекса, то гарантируется, что только поток за раз выполняет эту секцию кода.Когда этот поток разблокирует мьютекс, другие потоки могут войти в эту область кода:

Насколько я понимаю, Mutex используется для защиты раздела кода от одновременного выполнения несколькими потоками, НЕ защитить адрес памяти переменной. Мне трудно понять концепцию, что произойдет, если у меня есть две разные функции, пытающиеся записать по одному и тому же адресу памяти.

Есть ли что-то подобное в библиотеке Boost:

  1. заблокировать адрес памяти переменной, например, double x, lock (x); Так что другие потоки с другой функцией не могут писать в x.
  2. сделайте что-нибудь с x, например, x = x + rand ();
  3. unlock (x)

Спасибо.

5
задан ildjarn 16 February 2012 в 21:52
поделиться