精華區beta CSSE 關於我們 聯絡資訊
※ 引述《ashkenazy (有中出無懦夫)》之銘言: : 放下無謂的爭擾,我也從來沒有質疑過教科書的說法 : 第一篇回文時也把教科書的說法與實作列出來,這也是因為我尊重教科書的說法 : 只是剛好原po問「一個程式如何區分出thread」 : 我就回答「Linux並沒有區分所謂的process或thread」 : 現在回來看這個答案,還算中肯吧? 囧rz 這樣的回答是陳述了一部分事實,卻更容易讓人誤解。 就多數作業系統的核心實作而言, process 就是一種 kernel thread. 特別去區分 thread 和 process 的差異是多此一舉。 但我們一般所講的 thread 主要是指 user thread, 就是一個 process 裡有好幾個 thread 的狀況。在作業系統核心不直接提供 user thread 的狀況下,於是就有了 pthread 程式庫來分擔此一需求。 pthread 的 'p' 就是 pseudo 的意思,一般實作是在呼叫 I/O 函式或有系統插斷時 切換到其他 user thread 繼續執行。我沒有閱讀原始碼,詳細的情況還得由其他人 補充。 Thread Library 是 POSIX 標準的一部分,所以也是作業系統的一部分,有 pthread library 就表示作業系統有 user thread, 只是不經由系統核心提供,而是透過系統 程式庫來提供。 這個 thread 議題講下去,還有硬體層級的 thread, 又和作業系統的 kernel thread 不同了。 這個字已經衍生出好些不同的意思了,不過就原題而言,應該是指 user thread. 用 kernel thread 來回答不能說很中肯喔。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.116.0.145
ashkenazy:感謝reader大說明 不過小弟pthread不熟 有點問題 01/23 18:13
ashkenazy:您指的user thread就是pthread lib的嗎? 01/23 18:14
ashkenazy:linux中的user thread與kernel thread都是所謂的process 01/23 18:23
ashkenazy:所以不知是否我們所討論的user thread是不同的東西? 01/23 18:23