繁体   English   中英

在原子布尔值上使用 compare_exchange_strong (C++)

[英]Using compare_exchange_strong on atomic booleans (C++)

我是并发编程的新手,我正在尝试编译以下代码:

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<>的文档,但没有帮助。

任何关于我做错了什么的信息都会非常有帮助!

compare_exchange_strong方法的第一个参数是对类型的引用。 此方法交换两个值,但前提contained值与expected比较为真。 否则,它将用包含的值替换预期值。

成语是这样的:

std::atomic<int> value;

int expected = value;
do {
    int new_value = get_updated_value(expected);
} while(!value.compare_exchange_strong(expected, new_value));

请注意,当比较为假时, expected会自动更新,并且每次迭代都会评估另一个new_value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM