Атомика и нить голодная - PullRequest
       8

Атомика и нить голодная

0 голосов
/ 25 августа 2018

У меня вопрос как к стандарту C ++, так и к более общей архитектуре компьютераПредставьте себе следующий фрагмент кода:

#include <atomic>
#include <thread>

std::atomic<int> a {0};

int main () {

    std::thread t1([&a](){
        int i = 1;
        int ao = a.load();
        while(!a.compare_exchange_weak(ao, i));
    }), t2([&a](){
        int i = 1;
        int ao = a.load();
        while(a.compare_exchange_weak(ao, i));
    });

    t1.join();
    t2.join();
    return 0;
}

У меня есть два вопроса:

  1. Может ли это в соответствии со стандартом теоретически привести к истощению потоков?
  2. Во-вторых,может ли это на практике на архитектуре x86 привести к голоданию?Можно на это положиться или нет?
...