[C++11]如何让std::condition_variable的内部类参数可以被修改(默认是const)

使用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();

猜你喜欢

转载自aigo.iteye.com/blog/2293088