在C中的多线程程序中创建随机数

Sal*_*kci 4 c random multithreading

我正在编写一个程序,其中有工作线程创建0到3之间从0到x-1(变量)的随机数

我需要学习的是如何在C中生成这些随机数.

我正在使用gcc编译器并在Ubuntu 11.10上工作

Alo*_*ave 7

rand()&srand()不是那种可以安全使用的那种.

它们既不是重入也不是线程安全.一般而言,C或C++标准都不对任何标准库函数提出有关线程安全性的任何要求.
某些实现可能确实提供了线程安全版本,但标准并未强制要求.

为了能够在多线程环境中使用随机数生成器,您将需要一个允许传入状态的实现.这样,您可以为每个线程保留一个状态值,并生成高质量的随机数,而无需同步.

C标准库不提供任何选择.这使得100%的可移植性变得相当不可能.使用的选择将取决于您的环境,您应该将其作为问题的一部分来提供以获得准确的答案.

看看声称提供MultiThreaded随机数发生器的GNU科学图书馆.