wait.h 提供一個等待隊列類,用于進(jìn)程等待某種資源或者事件。結(jié)構(gòu)wait_queue_head_t可以被嵌入到資源或者事件的結(jié)構(gòu)中。
進(jìn)程需要的資源不滿足條件,就將回調(diào)函數(shù)加入到資源的等待隊列里,然后調(diào)用schedule切到別的進(jìn)程。
硬件中斷或者別的進(jìn)程都能使資源產(chǎn)生變化,等資源滿足了就遍歷等待隊列調(diào)用回調(diào)。
這是進(jìn)程間同步和異步機(jī)制的基礎(chǔ)。
epoll就是個例子,epoll_ctl,add的時候就是把一個節(jié)點加入了資源fd的等待隊列上。
進(jìn)程互斥鎖,讀寫鎖都差不多。