rand () destrói o paralelismo

A função stdlib rand () no Unix tem um bloqueio global em torno dela fornecido por muitas versões do Linux. Como tal, se rand () for chamado em código paralelo crítico de desempenho, o desempenho irá afundar conforme cada thread ou processo tenta adquirir este bloqueio. Mesmo se esse bloqueio não for adquirido, você ainda terá uma condição de corrida no estado do gerador de número aleatório e pode produzir uma aleatoriedade ruim (não aleatória).

Use rand_r (unsigned int * state) em vez de aplicativos paralelos e simultâneos.

Fontes:
man 3 rand [comando unix]
http://unixhelp.ed.ac.uk/CGI/man-cgi?rand+3