使用 C++ 11lambda 提升线程
boost thread with c++ 11lambda
我如何将 boost 线程与 C++11 lambda 一起使用?
以下代码无效:
int sum;
m_workerThread=new boost::thread([]()
{
for(int i=0;i<100;i++)
{
sum=sum+i;
}
}
);
我遇到编译错误。
Error 4 error C3493: 'sum' cannot be implicitly captured because no default capture mode has been specified
我该如何解决这个问题?
根据错误,只需要捕获sum
。按原样,lambda 不知道 sum
是什么:
m_workerThread = new boost::thread([&sum]()
// ^^^^
{
for(int i=0;i<100;i++)
{
sum=sum+i;
}
}
);
我如何将 boost 线程与 C++11 lambda 一起使用?
以下代码无效:
int sum;
m_workerThread=new boost::thread([]()
{
for(int i=0;i<100;i++)
{
sum=sum+i;
}
}
);
我遇到编译错误。
Error 4 error C3493: 'sum' cannot be implicitly captured because no default capture mode has been specified
我该如何解决这个问题?
根据错误,只需要捕获sum
。按原样,lambda 不知道 sum
是什么:
m_workerThread = new boost::thread([&sum]()
// ^^^^
{
for(int i=0;i<100;i++)
{
sum=sum+i;
}
}
);