编写多线程应用程序时,遇到的最常见问题之一是竞争条件.
我对社区的问题是:
什么是比赛条件?你怎么发现它们?你怎么处理它们?最后,你如何防止它们发生?
我浏览了这个页面,但我无法得到同样的理由.在那里提到了
"它根本不返回任何值并要求客户端使用front()来检查队列前面的值更为明智"
但是检查front()中的元素也需要将该元素复制到左值.例如,在此代码段中
std::queue<int> myqueue;
int myint;
int result;
std::cin >> myint;
myqueue.push (myint);
Run Code Online (Sandbox Code Playgroud)
/*这里临时将在RHS上创建,它将被分配给结果,如果通过引用返回,则在弹出操作后结果将变为无效*/
result = myqueue.front(); //result.
std::cout << ' ' << result;
myqueue.pop();
Run Code Online (Sandbox Code Playgroud)
在第五行cout对象首先创建myqueue.front()的副本然后将其分配给结果.那么,最重要的是,pop功能可以做同样的事情.