【发布时间】:2021-12-27 03:15:49
【问题描述】:
我是并发编程的新手,我正在尝试编译以下代码:
private:
std::atomic<bool> resizing_;
void Resize() { if (resizing_.compare_exchange_strong(false, true)... }
这会引发error: no matching member function for call to 'compare_exchange_strong',我不确定如何解决这个问题。我尝试使用bool* 作为第一个参数,但这似乎没有帮助。我尝试阅读atomic<>s 上的文档,但没有帮助。
任何关于我做错了什么的信息都会非常有帮助!
【问题讨论】:
-
compare_exchange_strong的第一个参数必须是 lvalue(例如变量的名称),因为它需要绑定到左值引用。false是 prvalue,不能绑定到左值引用。
标签: c++ concurrency atomic