2017-07-11 134 views
-2

我正在學習POSIX線程。我的問題 - 如何暫停和恢復pthread?像Java中的線程一樣,有沒有像wait,notify等函數?我想根據某些情況多次運行單個pthread。在POSIX線程中掛起和恢復

在此先感謝

+0

https://stackoverflow.com/questions/11468333/linux-threads-suspend-resume這可能有你所需要的。 – J0hn

回答

0

如何暫停和恢復並行線程?像Java中的線程一樣,有沒有任何 函數像wait,notify等?

閱讀關於條件變量pthread。基本上,條件變量允許您在線程可以繼續前進行檢查條件。例如說有3個線程只有在某些條件成立時纔會進行。如果這種情況是錯誤的,線程將釋放它們持有的互斥鎖並「等待」。由於pthread_mutex_t類型的共享對象上的鎖被釋放,所以其他一些線程將繼續前進,並在某個時間點完成它們的工作,這樣條件將變爲真(希望)。檢查名爲pthread_cond_wait的功能。

一旦所述條件變爲真(或被滿足),則函數pthread_cond_signal/pthread_cond_broadcast可用於「通知」正在等待對象的線程。這些線程(這個簡單的解釋中的3個線程)然後自動獲取互斥鎖(當然,每次只有一個線程)並開始他們的業務。

檢查this教程。

我想根據 情況多次運行單個pthread。

需要進一步解釋嗎?