我正在使用C++ 11,其中有4个线程以并行方式插入并发队列。我知道线程何时完成处理,即预期的队列最终大小。
现在,我想对应该由严格执行,仅由执行一次的队列内容执行最终的聚合操作。例如,假设我要汇总值并将其发布到外部服务。
如何获得仅有效一次的锁?我不能使用简单的互斥锁,因为那不能保证我只有一次的需求。
伪代码:// inside a thread
enqueue items to concurrent_queue
if(concurrent_queue.size() == EXPECTED_SIZE) {
// do something ONLY once
}
最佳答案
一个简单的解决方案。
if(concurrent_queue.size() == EXPECTED_SIZE) {
// do something ONLY once
static bool doItOnce = DoItOnceOnly();
}
关于c++ - 抢在C++中仅有效一次的锁,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26609588/