升压RNG的线程的Safty [英] Thread-safty of boost RNG

查看:279
本文介绍了升压RNG的线程的Safty的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个循环应由insering 1 OpenMP的编译可以很好地pararellized:

I have a loop which should be nicely pararellized by insering one openmp pragma:

  boost::normal_distribution<double> ddist(0, pow(retention, i - 1));
  boost::variate_generator<gen &, BOOST_TYPEOF(ddist)> dgen(rng, ddist);
  // Diamond                                                                
  const std::uint_fast32_t dno = 1 << i - 1;
// #pragma omp parallel for
  for (std::uint_fast32_t x = 0; x < dno; x++)
    for (std::uint_fast32_t y = 0; y < dno; y++)
      {
        const std::uint_fast32_t diff = size/dno;
        const std::uint_fast32_t x1 = x*diff, x2 = (x + 1)*diff;
        const std::uint_fast32_t y1 = y*diff, y2 = (y + 1)*diff;
        double avg =
          (arr[x1][y1] + arr[x1][y2] + arr[x2][y1] + arr[x2][y2])/4;
        arr[(x1 + x2)/2][(y1 + y2)/2] = avg + dgen();
      }

(除非我让每个执行完全不依赖别人的错误。很抱歉,并不是所有code的插入)。

(unless I make an error each execution does not depend on others at all. Sorry that not all of code is inserted).

不过我的问题是 - 有升压RNG线程安全的?他们似乎是指海合会code海合会所以即使GCC code是线程安全的,可能不适合其他平台的情况。

However my question is - are boost RNG thread-safe? They seems to refer to gcc code for gcc so even if gcc code is thread-safe it may not be the case for other platforms.

推荐答案

浏览通过Boost邮件列表归档给出:

Browsing through the Boost mailing list archives gives:

Boost.Random不保持全球
  这将需要从保护状态
  多线程技术。

Boost.Random does not maintain global state that would need protection from multi-threading.

Boost.Random是线程安全的,只要
  不访问任何给定的对象
  同时两个线程。 (访问
  两个不同的对象是确定的,只要
  因为它们不共享一个引擎)。如果你
  要求此类安全问题,这是
  琐碎推出自己找有
  适当的互斥包装。

Boost.Random is thread-safe as long as you don't access any given object from two threads simultaneously. (Accessing two different objects is ok, as long as they don't share an engine). If you require that kind of safety, it's trivial to roll that on your own with an appropriate mutex wrapper.

这篇关于升压RNG的线程的Safty的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆