Boost.random и потокобезопасность
От: prrt  
Дата: 15.01.18 22:00
Оценка: 3 (1)
Как известно, boost::random не является thread safe.
Тогда если глобально есть
boost::random::mt19937 gen(42);

И из разных потоков одновременно очень часто вызывать
uint32_t randVal = gen();


то что может произойти?

Я вижу 2 опасности:
1) Для одновременных вызовов всегда будут сгенерированы одинаковые значения;
2) Произойдет undefined behaviour и вызов либо "зависнет", либо вывалится с segmentation fault.

Моя задача — с максимальной производительностью получать псевдо-случайные числа от gen.min() до gen.max(), качество чисел не важно. Поэтому без нужны закрывать мьютексом не хотелось бы.
Отредактировано 15.01.2018 22:01 prrt . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.