gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:56 24 4
gpt4 key购买 nike

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com