我有一个遵循以下结构的代码:
//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中编译的。