Я пытался создать многопоточность для обработки 2 многомерных массивов:как передать многомерный массив в многопоточном C++
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'] (http://en.cppreference.com/w/cpp/utility/functional/ref) и 'th' принимает ссылки на массивы (поэтому' void th (int (& arr1) [3] [100] [100], int (& arr2) [100] [100]) ') –
http://ideone.com/RkR40P Посмотрите, насколько это просто с std :: array. Никогда не используйте необработанные массивы – stefan