2011-03-24 75 views
1

試圖決定天氣使用asio鏈?boost :: asio鏈vs共享互斥的

我最大的需求是線程正在訪問一個數據庫多讀取和單寫。

看起來像股一次只允許一個線程,有沒有辦法做多讀和一個寫使用股?

爲什麼股線更好,然後只使用互斥?

回答

0

增強鏈序列化給予它們的所有活動。互斥體通常用於確保一個線程獲得資源的獨佔訪問權。

這個問題提到,你想訪問一個數據庫與多個讀者和一個作家。

我會考慮使用數據庫連接池設計。連接池通常會讓您配置池中有多少個連接,並具有獲取/釋放語義。如果連接不可用,則池可能會返回錯誤,等待連接返回並變爲可用,或者增加可用連接的數量。

可以爲讀者創建一個連接池。它可以配置爲有多個可用連接,以便多個線程可以分別請求連接,使用它,然後將其釋放回池中。

第二個連接池可用於單個寫入程序連接。該池應該只允許一個數據庫連接(即單個寫入器)。如果連接正在被一個線程使用,其他線程可以等待,直到連接被釋放並且變得可用。

多線程設計中總是需要額外的關注。一定要仔細研究每個線程使用同步資源(如上述池)的方式/方式。

+0

所以基本上股不會在這裏幫助? – 2011-03-30 01:02:50

+0

可以使用它來序列化書寫器的活動,但可能沒有多少讀者的幫助。 – skimobear 2011-03-30 01:40:04