一千萬個為什麽

搜索

使全局靜態變量成為多線程安全的

我在C庫中有全局靜態變量,它在多線程運行中生成異常。我需要以某種方式使它們安全(即,每個線程應該與這些變量的不同實例相關)。任何推薦的方法?

最佳答案

沒有標準方法適用於所有C實現,但存在特定於實現的解決方案。例如,使用Microsoft的編譯器(請參閱文檔) )

__declspec( thread ) int tls_i = 1;

使 tls_i 生活在線程本地存儲中(每個線程都有自己獨立的變量實例)。使用 gcc ,語法為

__thread int tls_i;

您可能還想查看有關該主題的維基百科條目

轉載註明原文: 使全局靜態變量成為多線程安全的