我需要運行一些線程數來處理對象數組。使用多線程處理對象數組 - 無效使用void表達式錯誤
因此,我已經寫這段代碼:
unsigned int object_counter = 0;
while(object_counter != (obj_max - left))
{
thread genThread[thread_num];//create thread objects
///launch threads
int thread_index = 0;
for (; thread_index<thread_num; thread_index++)
{
genThread[thread_index] = thread(object[object_counter].gen_maps());//launch a thread
object_counter++;
if(object_counter == (obj_max - left)
{
break;
}
}
///finish threads
for (; thread_index>0; thread_index--)
{
genThread[thread_index].join();
}
}
基本上,有對象的數組(對象的數目= obj_max - left
)。 每個對象都有一個稱爲gen_maps()
的函數(void類型函數),用於生成地形。
我想要做的是使用多線程從所有對象運行所有gen_maps()
函數。
最大線程數存儲在thread_num
變量中。
但是,當我試圖編譯這段代碼我得到一個錯誤:
error: invalid use of void expression
genThread[thread_index] = thread(object[object_counter].gen_maps(), thread_index);//launch a thread
^
我怎樣才能解決這個問題?