【发布时间】:2015-06-08 14:34:30
【问题描述】:
我正在尝试将多个数组传递给使用 std::thread 创建的线程,如下所示:
threadPool.push_back(std::thread(factor, Ap, Ai, Ax, b, Rs, Q, P, Pinv, n, 0, n, scale, nz));
函数因子定义如下:
void factor(int Ap[], int Ai[], double Ax[], double b[], double *Rs, int *Q, int *P, int *Pinv, int n, int k1, int k2, int scale, int nz);
线程已成功创建,我可以在 Visual Studio 线程窗口中看到它(来自调试器)。但是,线程中数组的数据与发送给线程的数据并不相似。 有人知道可能是什么原因吗?
【问题讨论】:
-
听起来你传递了一个指针(本质上是一个数组参数),它指向一个函数作用域的数组,然后退出函数,因此数组超出了作用域并被销毁。跨度>
-
是的,参数(Ap、Ai、Ax 和 b)最初定义为指针,然后作为数组传递给函数因子。您能否进一步解释您的上述评论。
-
使用与stackoverflow.com/questions/4264304/…相同的解决方案
标签: arrays multithreading c++11 stdthread