0
我知道多線程編程應該很難。但似乎事情找到了一種奇怪的破壞方式。例如,我有多個線程都改變了控制檯的顏色和寫入(它是一個錯誤日誌)。當互斥鎖不夠時?
有2個問題:
- jambled文本
- 顏色變化的干擾/沒有在正確的時間
當我添加了一個互斥鎖改變控制檯的顏色和寫部分到控制檯,它幫助干擾文本(從互斥鎖以來沒有看到),但控制檯顏色仍然是錯誤的。
所以看來互斥量是不夠的!我現在認爲我需要一個隊列和一個等待該隊列的線程,並在其中有東西時刷新它。所以我的問題是,你如何評估一個互斥鎖是否足夠?只要涉及管道/文件/通訊/另一個進程?
從您對問題的描述中很難說出任何內容。鎖通常是足夠的,因爲它們隔離進行原子修改的事務。 – 2011-06-05 18:32:11
由於您有兩個互斥鎖或者錯誤地梳理了顏色變化並寫入一個鎖定操作,它會進行讀取。 – 2011-06-05 18:33:38
聽起來好像你的函數改變了一個全局狀態(控制檯顏色),然後假設全局狀態即使在釋放互斥鎖之後仍然有效。 – 2011-06-05 18:35:17