使用std::condition_variable时出现以下编译错误:
SeverityCodeDescriptionProjectFileLineSuppression State
ErrorC3892'u': you cannot assign to a variable that is const
boost\lockfree\detail\copy_payload.hpp29
原因:
condition_variable.wait中的内部类的参数默认是const,如果需要做修改,需要添加取地址符。
例子:
std::mutex m; std::condition_variable cv; boost::lockfree::queue<int> cb(1024);
int ref; std::unique_lock<std::mutex> lk(m); cv.wait(lk, [&ref] {return cb.pop(ref); }); cv.notify_one();