2012-12-27 85 views
2

我寫了一個驅動器,用於使用該互斥鎖在讀()函數,以使線程阻塞如果ADC已在使用的ADC。共享資源(TWI/ADC) - Message Queue的或互斥的

我目前已經採用的TWI接口上讀回數據的方法相同。

我看到用於排隊消息Message Queue的要在TWI接口上發送。但是,如果您試圖讀回數據 - 無論如何您都希望等待響應。那麼,Mutex方法不會更合適嗎?

人能提供他們對我應該用什麼方法的想法?優點缺點?

謝謝。

回答

2

排隊請求/響應的對象到運行界面更加複雜的但更靈活的一個線程 - 它可以允許使用相同的機構的同步和異步交流。需要協議交換的線程有一個選擇 - 他們可以等待某個同步對象爲接口線程發送信號,表示已收到響應,或者提供自己的回覆隊列機制,以便多個請求可以排隊等待接口線程和回覆在每個完成時排隊等待。我通常提供一個'OnCompletion(thisRRobject)',RR類中的函數/方法,接口線程在完成時調用,因此將實際的回覆操作委託給請求的線程中的代碼。 RR對象還可以包含異常/錯誤消息,超時間隔等成員。這種併發症在庫中是很好的,給用戶提供了最廣泛的通信選擇。

..或者你可以使用互斥鎖。簡單但只有同步 - 如果前一次交換正在進行,每個請求線程都必須等待。如果一個請求線程不想等待/阻止,那麼很難。

馬的課程...