0

我有一个函数对象,用于使用线程构建块并行化 for_each() 算法,

函数对象使用随机数生成器 RND,其运算符方法 () 生成随机数。

问题:我需要一个随机数生成器来 1)在函数对象中只初始化一次 2)应该是线程安全的,并且 3)可以提供相同的种子,以便获得相同的结果。

我不太了解在函数对象中生成线程安全的随机数生成器。我尝试使用我自己的随机生成器类(使用引擎、分发和生成器)(使用 boost 库),但我需要一些简单的东西,比如 erand() ?或类似的东西,我们不需要为此编写单独的代码。

struct func {
 public:
  func() {  } 
  func(int t_) : t(t_) {  }  

 template <typename house_t>
 void operator()(house_t  house)  const  { 

   if ( RND() ) 
   {  //do something with the house } 

 } //operator

 private:
   int t;
 };


 //Parallel for_each
 tbb::parallel_for_each( house.begin(), house.end(), func(t) ); 

请建议

4

0 回答 0