我想多個陣列傳遞到正在使用的std ::線程如下創建的線程:傳遞數組線程
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線程窗口(從調試器)看到它。但是,線程中數組的數據與發送給線程的數據不相似。 任何人有任何想法可能是什麼原因?
聽起來就像你傳遞了一個指向函數作用域數組的指針(實質上是一個數組參數),然後退出該函數,以便數組超出範圍並被銷燬。 – Sneftel 2015-04-03 13:38:34
是的,參數(Ap,Ai,Ax和b)最初定義爲指針,然後作爲數組傳遞給函數因子。你能否請進一步解釋你的上述評論。 – Anas 2015-04-03 13:42:21
使用相同的解決方案http://stackoverflow.com/questions/4264304/how-to-return-an-array-from-a-method – Sneftel 2015-04-03 13:43:24