我有一个函数对象,用于使用Thread Building Blocks并行化for_each()算法,
函数对象使用随机数生成器RND,其运算符method()生成随机数。
问题:我需要一个随机数生成器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) );
请建议