Re[7]: Реальный пример использования volatile
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 18.01.05 15:42
Оценка:
Здравствуйте, AndrewJD, Вы писали:

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

E>>А в стандарте C++ где нибудь сказано, что вот здесь:
E>>
E>>for (unsigned int i = MaxIter; (i != 0) && go; --i)
E>>

E>>операция чтения переменной go будет атомарной? По-моему, язык C++ этого никак не гарантирует. Даже с помощью volatile.

AJD>Атомарность это понятие относится к платформе, а не к языку. volatile — гарантирует, что оптимизатор не будет позволять себе слишком многого.


Про то, что может гарантировать volatile в этой ветви, чуть повыше, уже все подробно объяснили. Я не хочу на этом останавливаться.

Поскольку язык не гарантирует, что чтение переменной go будет атомарным, то мне нужно обеспечить безопасность этого чтения путем синхронизации. Которая относится к платформе, но здесь не используется.

E>>А синхронизация нужна хотя бы потому, что чтение общих данных без синхронизации это


AJD>Для чего нужна синхронизация если тебе важно знать поменялось значение или нет? Тебе не важно САМО значение, тебе важен факт его изменения. Какая тут нужна синхронизация

Ну в данном конткретном случае само значение переменной и указывает на факт его изменения

А по этому конкретному примеру я уже высказал все, что хотел.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.