推 za755188:感謝 140.113.91.182 04/09 03:22
※ 引述《za755188 (tanis)》之銘言:
: 理論上kernel不會知道user thread在幹嘛所以當某個thread發出了一個
: blocking system call之後整個process應該會被block住
: 但是之前寫pthread有關的程式時,發現select()並不會block掉整個process
: 查了一些網路資料後大致上是說那些thread library會把原來的blocking calls
: 包起來,但我不了解的是,這個東西要怎麼實作呢?
: 可以給我一點方向嗎?謝謝
這個沒什麼,
你如果修過系統程式或相關課程的話,
應該知道有一種 symbol 叫做 weak symbol,
C standard library 將這些 function 定義為 weak symbol,
這樣其它 library (如 pthread library) 就能取代原 library 的定義,
譬如 select() 就會使用 pthread library 提供的版本,
所以你會發現當你使用 pthread 時會 link 至少兩個 library。
因為你是 113 的,
所以比較詳細的東西還是留給你自己查比較好,
免得摧殘國家棟梁。
--
Ling-hua Tseng (uranus@it.muds.net)
Department of Computer Science, National Tsing-Hua University
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage: https://it.muds.net/~uranus
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.221.133
※ 編輯: tinlans 來自: 61.230.221.133 (04/09 01:49)