这段代码有竞争条件吗?
auto x = make_shared<Fun>(1984); //could also be raw ptr
auto t = thread(func, x);
Herb Sutter 在他的 C++ 和 Beyond 演讲中也使用了并发队列。
所以如果我有一个队列q
,
auto x = new Fun(1984);
q.push(x);
//other thread
auto ptr = q.pop();
这是比赛条件吗?另一个线程是否有可能弹出ptr
并仍然看到ptr
指向的内存位置的陈旧值?由于并发队列不在标准中,假设我使用的是 PPL/TBB 队列。