Vet wrote:
> В объекте класса есть переменная, которая используется двумя потоками.
> Один из потоков иногда меняет ее значение.
> Есть ли необходимость в этом случае делать переменную как volatile.
> И зависит ли ответ от того, сздан ли объект класса на стеке или в динамической памяти.
>
> Вопрос вызван тем, что у Рихтера прочитал, что если глобальная переменная используется
> разными потоками, то она обязана быть volatile. Вот меня и рабирают сомнения нужно ли
> тоже самое делать для переменных(членов) класса.
Рихтер ошибался.
volatile не имеет никакого отношения к multithreading, поэтому его применение в этой ситуации не только бесполезно, но может быть и вредно, так как с volatile компилятор не сможет соптимизировтать доступ к этой переменной. Но если один из потоков изменяет переменную, синхронизация при помощи мютексов обязательна.
--
Maxim YegorushkinPosted via RSDN NNTP Server 1.9