Безопасный поток Mersenne Twister - PullRequest
5 голосов
/ 01 июля 2010

В поисках поточно-ориентированного генератора случайных чисел я обнаружил класс твист-генератора мерсенна, который, если автор безопасен для потока, говорит:это безопасная нить.Там нет никаких блокировок или чего-то подобного переменной блокировки.

Действительно ли эта реализация поточно-ориентирована?Если да, то что это за магия?

Ответы [ 2 ]

6 голосов
/ 08 октября 2010

Обсуждается, как создать многопотоковый генератор случайных чисел Mersenne Twister в многопоточном Mersenne Twister, а также реализацию (т. Е. Исходный код на Фортране 95) в http://theo.phys.sci.hiroshima -u.ac..jp / ~ Ishikawa / ПСЧ / mt_stream_en.html .Метод запускает несколько потоков в точках в последовательности Мерсенна Твистера, которые широко разделены, гарантируя, что несколько потоков не зависят друг от друга и не будут создавать одинаковую последовательность случайных чисел.Нет необходимости в блокировках и, следовательно, потенциальных узких местах в параллельном коде;отдельные потоки доступны по идентификатору.

1 голос
/ 01 июля 2010

Похоже, что он потокобезопасен в том смысле, что два разных объекта MersenneTwist могут использоваться одновременно.Вы не можете использовать один и тот же объект в двух потоках, не защитив его блокировкой.

Я предполагаю, что оригинальная версия C, о которой автор говорит об используемых глобальных или статических переменных, является улучшением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...