「wait()系統調用暫停當前進程的執行,直到它的一個子進程結束爲止」。 Waitpid也是類似的。Linux:是否從一個線程調用wait()會導致所有其他線程也進入睡眠狀態?
我的問題是,從一個線程調用wait()是否會導致所有其他線程(在同一進程中)也進入休眠狀態?對於分離的線程,行爲是否也一樣?
「wait()系統調用暫停當前進程的執行,直到它的一個子進程結束爲止」。 Waitpid也是類似的。Linux:是否從一個線程調用wait()會導致所有其他線程也進入睡眠狀態?
我的問題是,從一個線程調用wait()是否會導致所有其他線程(在同一進程中)也進入休眠狀態?對於分離的線程,行爲是否也一樣?
這只是手冊中的一個錯誤。 wait
暫停調用線程,而不是進程。絕對沒有辦法暫停整個過程,不要發送SIGSTOP
或每次手動掛起一個線程。
據我所知,從任何線程調用wait會導致所有與該進程關聯的線程停止。
但不要抱着我。最好的做法是測試它。
絕對不是。 –
應該只停止當前線程。如果你想在看代碼的時候讓人生病,並且導致你自己遇到很多問題,那麼你可以使用它來進行陪審團綁定的線程同步。但我不會推薦它。
這是特定於Linux的嗎?由於Linux對每個線程都有單獨的內核進程。 – Jacob
某些上下文:Linux 2.4沒有真正的POSIX線程。每個線程都被視爲一個不同的進程。對於具有完整POSIX線程的Linux 2.6而言,這已經發生了變化。我想有些手冊頁沒有更新。 – user9876
但即使在2.4中也是錯的;因爲線程表現得像進程,當然只有一個線程會被掛起。 –