我有一个函数对象,用于使用线程构建块并行化 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) );
请建议