Re[2]: volatile у переменной класса
От: Dr.Gigabit  
Дата: 09.01.05 21:16
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Vet wrote:


>> В объекте класса есть переменная, которая используется двумя потоками.

>> Один из потоков иногда меняет ее значение.
>> Есть ли необходимость в этом случае делать переменную как volatile.
>> И зависит ли ответ от того, сздан ли объект класса на стеке или в динамической памяти.
>>
>> Вопрос вызван тем, что у Рихтера прочитал, что если глобальная переменная используется
>> разными потоками, то она обязана быть volatile. Вот меня и рабирают сомнения нужно ли
>> тоже самое делать для переменных(членов) класса.

ME>Рихтер ошибался.


ME>volatile не имеет никакого отношения к multithreading, поэтому его применение в этой ситуации не только бесполезно, но может быть и вредно, так как с volatile компилятор не сможет соптимизировтать доступ к этой переменной. Но если один из потоков изменяет переменную, синхронизация при помощи мютексов обязательна.


Не могли бы вы более подробно пояснить, зачем тогда вообще использовать volatile? Всегда думал, что volatile обозначает, что данные могут изменяться без ведома компилятора(в том числе и с помощью многопоточности). Т.е. компилятор не должен делать никахих предположений о значении переменной, в частности, в целях оптимизации.
... << RSDN@Home 1.1.4 @@subversion >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.