2010-02-25 202 views
2

我在問總體多線程問題。例如,我鎖定了一個互斥鎖並恢復了任務,然後我想暫停它,我的問題是,我應該在掛起它之前解鎖互斥鎖嗎?因此,當我用互斥鎖再次恢復時,它會成功恢復?暫停/恢復任務

我剛開始使用多線程的東西,我很難搞清楚這些概念。

非常感謝。

+1

我想你必須告訴我們更多關於你在做什麼之前,任何人都可以給出一個非常有意義的答案。舉個例子,你爲什麼暫停該線程? – 2010-02-25 23:30:41

回答

2

一般而言,只要您需要「互斥」控制任何您正在同步的對象,就一定要持有互斥鎖。我會說,繼續抓住,釋放它會有問題。也許你正在做的更全面的解釋?我的方法是異步執行而不是多線程。通常更好地使用系統資源。

+0

你是什麼意思異步?多線程是一個不同步的實現? – domlao 2010-03-04 03:03:29

1

不可以。即使任務被暫停,您也應該持有互斥鎖。

該互斥量用於保護多個線程同時訪問它的一段代碼。如果您在暫停時釋放互斥鎖,則允許其他線程訪問該互斥體在那裏阻止的那部分代碼。

如果您認爲不需要保持互斥鎖,則表示您需要重新設計互斥鎖的鎖定時間和釋放時間(根據您要保護的內容)。這應該獨立於線程的恢復/暫停。