c++ - 将原子变量传递给函数

标签 c++ c++11 atomic

我正在尝试将一个原子变量传递给一个函数,如下所示:

 // function factor receives an atomic variable 
 void factor(std::atomic<int> ThreadsCounter)
 {
  .........
 }


 // main starts here
 int main()
 {
 // Atomic variable declaration
 std::atomic<int> ThreadsCounter(0);
 // passing atomic variable to the function factor through a thread
 Threadlist[0] = std::thread (factor, std::ref(ThreadsCounter));
 Threadlist[0].join();
 return 0;
 }

运行上述代码时,出现以下错误:

Error 2 error C2280: 'std::atomic::atomic(const std::atomic &)' : attempting to reference a deleted function c:\program files (x86)\microsoft visual studio 12.0\vc\include\functional 1149 1 klu_factor

谁知道如何解决这个问题?非常感谢您的帮助。

最佳答案

函数 factor 按值获取它的 ThreadsCounter 参数,并且 std::atomic 不可复制构造。

即使您绑定(bind)了对线程函数的引用,它也会尝试创建一个拷贝来传递该函数。

关于c++ - 将原子变量传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28845141/

相关文章:

c++ - 适用于 Windows 的 Linux mingw32 sfml 交叉编译 - 缺少 dll 文件

C++隐藏继承类?

c++ - Windows+VisualC 上的 volatile 读写是原子的吗?

java - 变量读写的原子性

java - 如何删除检查/放置的非原子使用并使代码线程安全?

c++ - 何时使用详细类型说明符

C++ 重载问题

c++ - 在 Linux 中使用 GDAL API 的程序

C++0x |为什么 std::atomic 使用 volatile-qualifier 重载每个方法?

c++ - 实现接口(interface)时对已删除函数的 unique_ptr 引用