初学者的问题,但我该如何线程?
我有这段代码:
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);
}
}
如果可能的话,我想线程化 Init 函数和 AddModelInstance 函数,但是我不知道如何继续。如何激活多个线程(在本例中最多 8 个)?
我试过这样的单线程:
std::thread t1(myScene.AddModelInstance, myModelInstance);
但是我得到以下错误:
CScene::AddModelInstance':非标准语法;使用 '&' 创建指向成员的指针
我尝试将 & 添加到函数和参数中,但都不起作用。
最佳答案
取而代之的是:
std::thread t1(myScene.AddModelInstance, myModelInstance);
你需要这样的东西:
std::thread t1(&Scene::AddModelInstance, myScene, myModelInstance);
&Scene::AddModelInstance
是指向您要调用的成员函数的指针,它大概需要一个隐式的 this
参数 (myScene
) .
关于c++ - 我如何线程化一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46001903/