初學者的問題,但我怎麼線程?如何穿線功能?
我有這樣的代碼片段:
std::vector<std::thread*> threads[8];
for (unsigned short rowIndex = 0; rowIndex < unimportantStuff.rows; ++rowIndex)
{
for (unsigned short columnIndex = 0; columnIndex < unimportantStuff.columns; ++columnIndex)
{
myModelInstance = new CModelInstance;
myModelInstance->Init(myLoader.CreateTriangle(myFramework.myDevice, { -0.8f + unimportantStuff.offset*columnIndex, -0.8f + unimportantStuff.offset*rowIndex }), { -0.8f + unimportantStuff.offset*columnIndex, -0.8f + unimportantStuff.offset*rowIndex });
myScene.AddModelInstance(myModelInstance);
}
}
我想線程同時初始化函數和AddModelInstance功能如果可能的話,但是我不知道該怎麼繼續。我如何激活多個線程(在這種情況下最多8個線程)?
我試圖用這樣一個線程:
std::thread t1(myScene.AddModelInstance, myModelInstance);
,但我得到了以下錯誤:
CScene :: AddModelInstance':非標準語法;使用'&'來創建指向成員的指針
我試着將&同時添加到函數和參數中,但都不起作用。
我敢打賭,你不想要一個向量指向線程的8個向量的數組。如果你想要一個線程矢量,那就是'std :: vector' –
user463035818
爲什麼你有一個init函數?這是一種代碼味道。使用構造函數,它被設計爲初始化一個對象。 – 2017-09-01 14:45:54
謝謝你指出。我不知道,當我看到我的同學代碼時,它已經進入我的代碼。我認爲我的老師提到這是行業的代碼標準,但我明白你的觀點。 –