#5809 Score: 1
maajor
Participant
3 pts

你好,我机器是四核八线程的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.