在多執行緒程式設計場景中,經常需要在單獨的執行緒中產生隨機數。但是,在使用標準函式庫的 rand() 函數時,如果處理不當,可能會遇到問題。
多個執行緒執行相同函數重複產生相同的隨機數。這是因為每個執行緒通常都有自己的全域資料副本,包括 rand() 的內部狀態,該副本由所有執行緒共用。
避免產生相同的隨機數,有必要明確管理 rand() 的內部狀態。文件建議如下:
例如,要在多執行緒環境中使用rand_r(),您可以:
#include <stdlib.h> void* thread_function(void* arg) { unsigned int state = 0; // Thread-specific state while (1) { int random_number = rand_r(&state); // Do something with random_number } return NULL; }
以上是如何使用 C 的'rand()”函數在多個執行緒中產生唯一的隨機數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!