我正在開發一個多線程中間件環境。該框架基本上是一個捕獲和流媒體框架。所以它涉及到一些線程。執行線程所需的幫助監視機制
爲了讓你的線程架構的所有的簡單說明: 有用於解複用器,receiveVideo,DecodeVideo,DisplayVideo等每個線程執行其functionlity seprate線程,爲如:
解複用器提取音頻,視頻包
receivevideo接收頭+視頻分組的有效載荷&刪除淨荷
DecodeVideo接收有效載荷&解碼淨荷分組&顯示在顯示
因此每個線程所提取的數據饋送到下一個線程的解碼的分組
DisplayVideo接收解碼的分組。線程在它們之間共享數據緩衝區,緩衝區通過使用互斥鎖和信號量進行同步。同樣,也有其它的線程來處理ananlogvideo和analogaudio等
所有期間初始化產卵在但是它們仍然阻塞上的信號量和根據輸入(模擬/ digitial)選擇性信號量的螺紋發出信號,以便特定線程得到解鎖&繼續工作。在各個階段,每個線程調用一些較低級別(驅動程序調用)來獲取數據或寫入數據等。這些調用被阻塞,並且由這些調用導致的錯誤(驅動程序返回損壞的數據,驅動程序停止)應該被處理,但目前沒有處理。
我想實現一個線程監視機制其中一個線程將監視這些工作線程,如果發生錯誤情況將採取一些預防措施。據我瞭解,某些此類機制通常用於UI或MMI應用程序中的看門狗。我正在尋找類似的東西。
我使用的並行線程和無升壓或STL(它的遺留代碼,相當多的程序C++)
有關特定框架或設計圖案或開源項目裏面做類似的事情,並可能有助於與想法任何想法爲了實施我的要求?
我能有監視線程活躍,只有在例外情況或保持清醒和投票的時候,這一切都在我的實現,但有信號問題,我需要知道的例外有發生或錯誤情況告訴我這樣,這是不可能總是像驅動程序無限期停頓或發送損壞的垃圾。 – 2011-05-04 10:59:52
@Als我不確定你能否知道司機是否停車。我不知道有什麼機制可以檢測出司機是否停車。但是,您可以通過嘗試捕獲來了解是否發生異常,並且在捕獲到信號機制的內部。看到它可能是你的異常處理機制的一部分 – 2011-05-04 11:02:39