Код:
Код: Выделить всё
#include
#include
int main()
{
std::atomic_size_t example;
size_t expect = 1000;
example.store(100, std::memory_order_release);
//Now example.load() is 100;
auto result = example.compare_exchange_weak(expect, 50, std::memory_order_relaxed);
//Now result is zero(false) and example.load() is 100,I knew it would.
result = example.compare_exchange_weak(expect, 50, std::memory_order_relaxed);
//But now !!! result is One(true)! and example.load() is 50 Why???
}
Я не могу понять, почему это произошло, поэтому очень надеюсь, что вы ответите на мой вопрос. Большое вам спасибо.
Я усовершенствовал этот код , и теперь он компилируется и выполняется правильно, это всего лишь один поток.
Подробнее здесь: https://stackoverflow.com/questions/630 ... h-i-havent
Мобильная версия