Home › Forums › GAMES在线课程(现代计算机图形学入门)讨论区 › 作业7的提高题踩得一些坑(慢更中) › Reply To: 作业7的提高题踩得一些坑(慢更中)
你好,我机器是四核八线程的i7,这个是物理的不用设置的。我是原生ubuntu环境,不过跟虚拟机应该一样的。代码里开了8个线程,我就默认系统线程池自动分配到了一个物理线程做一个工作线程了。
C++我也不太熟,平常c#写的比较多。写std::thread老给我报类型错误,指针引用傻傻分不清,然后写std::future就能跑。望大佬讲解。
比如一段示例代码如下:
someReturnType someFunction(parameterA, parameterB);
std::vector<std::future<someReturnType>>> futures;
// dispatch all thread
for(uint32_t i = 0; i < NUM_THREAD; i++)
{
auto fut = std::async(std::launch::async, someFunction, parameterA, parameterB);
futures.push_back( std::move(fut) );
}
// join all results
for(uint32_t i = 0; i < NUM_THREAD; i++)
{
auto result = futures[i].get();
}
这里someFunction就是一个干活的函数,我dispatch了NUM_THREAD个的someFunction,它们就在不同线程跑了,参数列表的区别使得每个线程干的不一样。
This post has received 1 vote up.