2016-07-14 7 views
1

スレッド化ビルディングブロック(fractal.cpp)に含まれるフラクタルの例を見て、このコンストラクタを思いついた。不思議なことに、私は関数内で2つの引数を渡すだけです。私が3つのパラメータにそれを増加させる場合、これはコンパイルに失敗します。私はそれも元のケースで失敗するはずだと思う - しかし、それはしません。なぜ2つのパラメータだけでも失敗しないのですか?または、3つのパラメータを使用するにはどうすればよいですか?std :: thread with tbb - 2つ以下の引数を持つビルド

#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 ; 
    }' 

答えて

0

TBBからstd::threadのコンストラクタのみ0、1、2引数関数のコンストラクタ(TBB/COMPAT /スレッドheader参照)を有しているので、そのC++ 11のような可変長ないstd::thread

関連する問題