std::cout<<"\n=== Test ===\n"; mutex mtx; queue<int>numQueue;boolended =false; future<int> fut1 = async([&] {intcount =0;while(!ended) { lock_guard<mutex>lock(mtx);while(!numQueue.empty()) { count+=numQueue.front(); numQueue.pop(); } }returncount; }); future<int> ...
写操作会改变size(),所以别指望线程安全了。需要concurrent_queue就请自己去找,别指望std::queue。
std::cout<<"\n=== Test ===\n"; mutex mtx; queue<int>numQueue;boolended =false; future<int> fut1 = async([&] {intcount =0;while(!ended) { lock_guard<mutex>lock(mtx);while(!numQueue.empty()) { count+=numQueue.front(); numQueue.pop(); } }returncount; }); future<int> ...