C++ расслабил вопросы по атомике, выступление Херба Саттера [закрыто]C++

Программы на C++. Форум разработчиков
Anonymous
C++ расслабил вопросы по атомике, выступление Херба Саттера [закрыто]

Сообщение Anonymous »

У меня есть два вопроса по поводу доклада Херба Саттера о расслабленной атомарности
Первый пример:
Потоки 1..N увеличиваются:

Код: Выделить всё

while (...) {
if (...) {
count.fetch_add(1, memory_order_relaxed);
}
}
Основная тема:

Код: Выделить всё

int main() {
launch_workers();
join_workers();
cout 
[code]while(!stop.load(memory_order_relaxed)) {
if (...) {
dirty.store(true, memory_order_release)
}
}
Основная тема:

Код: Выделить всё

int main() {
launch_workers();
stop = true;
join_workers();
if (dirty.load(memory_order_acquire)) {
// read published data to clean up
}
}
Он говорит, что создание нового потока (launch_workers()) и присоединение к нему (join_workers()) — это операции синхронизации. Так почему же stop=true нельзя ослабить? Не гарантируется, что его порядок не будет изменен?
Я думал, что stop.store(true, Memory_order_relaxed) не следует переупорядочивать в этом примере.

Подробнее здесь: https://stackoverflow.com/questions/786 ... utter-talk

Вернуться в «C++»