将原子变量传递给函数
Passing an atomic variable to a function
我正在尝试将原子变量传递给函数,如下所示:
// 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
不可复制构造。
即使您绑定了对线程函数的引用,它也会尝试创建一个副本来传递该函数。
我正在尝试将原子变量传递给函数,如下所示:
// 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
不可复制构造。
即使您绑定了对线程函数的引用,它也会尝试创建一个副本来传递该函数。