【发布时间】:2015-03-01 00:41:47
【问题描述】:
我试图创建多线程来处理 2 个多维数组:
vector<thread> tt;
for(int i=0;i<4;i++) tt.push_back(thread(th,arr1,arr2));
使用线程函数:
void th(int arr1[3][100][100], int arr2[100][100]) {
...
}
我也尝试通过引用传递,但也无法正常工作:
void th(int (&arr1)[3][100][100], int (&arr2)[100][100]) {
...
}
他们都给了我一个"no type named 'type' in 'class std::result_of void(* (int **[])..." 错误。有人可以告诉我如何在多线程中正确传递多维数组吗?
【问题讨论】:
-
去掉多线程,专注于让你的函数声明和调用正确。
-
tt.push_back(thread(th, std::ref(arr1), std::ref(arr2)));和std::ref和th引用数组(所以void th(int (&arr1)[3][100][100], int (&arr2)[100][100])) -
ideone.com/RkR40P 看看使用 std::array 是多么容易。永远不要使用原始数组
-
@PiotrS。谢谢彼得。我确实尝试了 ref,但是,得到了同样的错误。
-
@ChuNan 请附上MCVE
标签: c++ multithreading c++11 multidimensional-array pass-by-reference