原子和线程饥饿

时间:2018-08-25 20:01:03

标签: c++ multithreading c++11 atomic

我对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架构上的实践会导致饥饿吗?我可以依靠还是不依靠?

0 个答案:

没有答案