将原子变量传递给函数

阿纳斯

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

 // 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;
 }

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

错误2错误C2280:'std :: atomic :: atomic(const std :: atomic&)':尝试引用已删除的函数c:\ program files(x86)\ microsoft visual studio 12.0 \ vc \ include \ functional 1149 1 klu_factor

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

科林·多芬妮

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

即使您绑定了对线程函数的引用,它仍试图创建一个副本以传递该函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章