Re[5]: читаем про volatile
От: MaximE Великобритания  
Дата: 11.01.05 07:27
Оценка: 6 (1)
c-smile wrote:

> Здравствуйте, MaximE, Вы писали:

>
>>> (свой зуб шли заказным письмом)
>
> ME>Вышлю, когда ты мне напишешь, что volatile гарантирует что все процессоры будут видеть изменения над volatile переменными без барьеров памяти.
>
> Трам-та-ра-рам, Макс, ну причем здесь volatile и процессор?
> volatile это хинт компилятору-оптимизатору не больше и не меньше.

С этим я абсолютно согласен.

> GCC и VC его могут интерпретировать по разному. Как и все остальные.


Насколько я знаю, volatile не заставляет генериться кода больше, чем нужно для зачитывания переменной из памяти (а не из регистра).

> InterlockedExchange например это intrinsic функция в VC. VC в принципе знает про архитекуру ОС и threads. Поэтому там volatile активно используется для программирования межпоточного взаимодействия. Сответсвенно все функции Interlocked* (10шт) имеют volatile аргументы.


Мои вопросы:

  1. Как конкретно помогает volatile написанию thread safe кода?
  2. Хотелось бы увидеть кусок кода, который испрользует Interlocked* ф-ции для изменения глобальной переменной, разделяемой между потоками, и который не работал бы если переменная не volatile. Для чистоты эксперимента, объявить ф-ции Interlocked* или скопировать их реализацию без volatile.

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.