Здравствуйте, 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>>