Re: volatile у переменной класса
От: c-smile Канада http://terrainformatica.com
Дата: 10.01.05 05:40
Оценка: 18 (1) -2
Здравствуйте, Vet, Вы писали:

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

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

Vet>Вопрос вызван тем, что у Рихтера прочитал, что если глобальная переменная используется

Vet>разными потоками, то она обязана быть volatile. Вот меня и рабирают сомнения нужно ли
Vet>тоже самое делать для переменных(членов) класса.

Да, обязательно, иначе оптимизатор тебе такого наворотит — не обрадуешься.

The volatile keyword is a type qualifier used to declare that an object can be modified in the program by something other than statements, such as the operating system, the hardware, or a concurrently executing thread.


Желательно еще установку этой переменной выполнять с помощью InterlockedExchange.
Собственно так как эта функция объявлена как

LONG InterlockedExchange(
  LPLONG volatile Target, // value to exchange
  LONG Value              // new value
);


без объявления volatile у тебя ничего и не получится.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.