0
如果對某個庫中的代碼進行共享訪問,多個線程之間的代碼受全局互斥體保護,並且第一次獲取互斥體時,我們需要調用pthread_mutex_init,但如果多個線程嘗試調用庫函數的時間相同我們需要確保pthread_mutex_init只被一個線程調用一次。自動調用pthread_mutex_init
我們該如何做到這一點?庫構造器/析構器是一個解決方案,但庫必須支持所有的編譯器/平臺。我們可以使用計數器並使用atomic inc/dec,但對每個鎖定/解鎖操作的原子++ /操作都很昂貴。我正在尋找其他方式。所有意見將不勝感激。
謝謝。我會嘗試這些選項。 – Pointer
pthread_once可能會使用原子比較再加一個鎖定/解鎖。靜態初始化是更好的選擇。 – Pointer
@Pointer當然。創建和使用靜態初始化結構是非常愚蠢的,其目的僅僅是避免靜態初始化另一個可比較的結構。 –