许多线程的lambda相同

时间:2013-02-21 22:26:03

标签: c++ multithreading c++11 lambda

我有一个遵循以下结构的代码:

//some const variables here


std::function<void(int threadID, NumericMatrix * mat)> threadT = [const1,const2](int threadID, NumericMatrix * mat) {
//a lot of variables defined inside lamdas

}

NumericMatrix * mat1 = new NumericMatrix(N, nEstimators);
std::thread t1( threadT, 1, mat1 );
NumericMatrix * mat2 = new NumericMatrix(N, nEstimators);
std::thread t2( threadT, 2, mat2 );
t1.join();
t2.join();

return;

当我尝试运行它时,我收到很多分段错误错误,但是当我尝试只运行一个线程时没有问题。我不认为存在互斥问题,两个线程只访问

中定义的变量

所以我想知道:是不是因为我为每个线程重复使用相同的lambdas?如果是这样,我怎么能解决这个问题呢?通过制作threadT(如何)的副本?

Obs。:我找不到用gdb调试它的方法,因为它是在R中编译的。

0 个答案:

没有答案