你好,我用C語言構建了一個散列表。我已經對單元進行了測試,足以確信它的工作原理。問題是數據結構將被動態鏈接到我沒有編寫並且可能正在使用線程的代碼。所以我需要對它進行同步,以便理論上可以同時修改/讀取任意數量的線程。研究並行線程互斥API後,我做了以下在C中實現同步數據結構
聲明靜態全局變量:
static pthread_mutex_t lock;
在HashTable_init(使用哈希表之前,它總是叫)我初始化它:
pthread_mutex_init(&lock,NULL);
在讀取每個函數/寫,我把一個鎖在啓動結構:
pthread_mutex_lock(&lock);
並在最後解鎖:
pthread_muter_unlock(&lock);
這足以使數據結構同步嗎? (因爲目前我的程序掛起)。
謝謝
你的互斥量是遞歸的嗎?也許你有一個死鎖,因爲你試圖鎖定兩次 – 2011-03-29 14:18:34
請確保你在返回錯誤路徑之前解鎖互斥鎖。 – nos 2011-03-29 14:19:30