c++ - 我如何线程化一个函数?

标签 c++ multithreading

初学者的问题,但我该如何线程?

我有这段代码:

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/

相关文章:

c++ - 在不破坏保留元素的情况下更改 vector 的大小

PHP cURL 多线程没有curl_multi,如何实现?

c# - 通过线程以一定的时间间隔执行任务一定次数

multithreading - Spring:从 TaskExecutor 线程访问 JPA 存储库

java - 如何在 JFrame 退出时运行终止命令?

c++ - 如何调用 shell "file copy dialog"来报告 Win32 中的复制进度?

C++ 设计一个对象来获取变量值和适用于它们的规则

c++ - 如何在 C++ 中创建多个全局变量实例

c++ - WINAPI - 清空文件?

c++ - 实例化线程而不运行它们?