gpt4 book ai didi

c++ - std::thread with tbb - 使用 2 个或更少的参数构建

转载 作者:太空宇宙 更新时间:2023-11-04 13:13:56 24 4
gpt4 key购买 nike

我查看了线程构建 block (fractal.cpp) 中包含的分形示例,并想出了这个构造。奇怪的是 - 如果我只在函数中传递 2 个参数,这会起作用。如果我将它增加到三个参数,则无法编译。我怀疑它在原始情况下也应该失败 - 但事实并非如此。为什么只有 2 个参数也不会失败?或者我如何让它与 3 个参数一起工作?

    #include <iostream>
#include <ctime>
#include <cstdlib>
#include <vector>
#include <tbb/compat/thread>

void tt(int, int); //, int) ;//fails if 3rd int added

int main(int argc, char** argv) {

int numthreads = 4 ;
int inta = 0 ;
int intb = 1 ;

std::vector <std::thread *> mythreads(numthreads) ;

int ic ;
for (ic = 0; ic < numthreads-1 ; ++ic)
{
mythreads[ic] = new std::thread(tt,ic, inta) ; // , intb ) ;
}

tt(ic, inta) ; //, intb) ;

for (int ic = 0 ; ic < numthreads-1 ; ++ic)
mythreads[ic]->join() ;

std::cout << "all done" << std::endl ;
}
void tt( int myid, int intb) // , int intc)
{
std::cout << "entry " << myid << std::endl ;
}'

最佳答案

因为来自 TBB 的 std::thread 的构造函数只有 0、1 和 2 参数函数的构造函数(参见 tbb/compat/thread header ),它不像 c+ 那样可变+11 的 std::thread

关于c++ - std::thread with tbb - 使用 2 个或更少的参数构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38383888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com