l 父程序通過wait和waitpid等函式等待子程序結束,這會導致父程序掛起
l 如果父程序很忙,那麼可以用signal函式為sigchld安裝handler,因為子程序結束後,父程序會收到該訊號,可以在handler中呼叫wait**
l 如果父程序不關心子程序什麼時候結束,那麼可以用signal(sigchld, sig_ign) 通知核心,自己對子程序的結束不感興趣,那麼子程序結束後,核心會**,並不再給父程序傳送訊號
l 還有一些技巧,就是fork兩次,父程序fork乙個子程序,然後繼續工作,子程序fork乙個孫程序後退出,那麼孫程序被init接管,孫程序結束後,init會**。不過子程序的**還要自己做。
面試 程序同步的四種方法
程序同步的四種方法 1 臨界區 critical section 通過對多執行緒的序列化來訪問公共資源或一段 速度快,適合控制資料訪問。優點 保證在某一時刻只有乙個執行緒能訪問資料的簡便辦法 缺點 雖然臨界區同步速度很快,但卻只能用來同步本程序內的執行緒,而不可用來同步多個程序中的執行緒。2 互斥量...
面試題延伸 之 雜湊衝突及四種解決方法
最近看了布隆去重原理,發現乙個詞雜湊衝突特意去查了下 參考雜湊衝突的產生原因雜湊是通過對資料進行再壓縮,提高效率的一種解決方法。但由於通過雜湊函式產生的雜湊值 是有限的,而資料可能比較多,導致經過雜湊函式處理後仍然有不同的資料對應相同的雜湊值。這時候就產生了雜湊衝突。產生雜湊衝突的影響因素裝填因子 ...
面試題學習筆記7 C 中的四種鎖
互斥鎖用於控制多個執行緒對共享資源互斥訪問的乙個訊號量。可以避免多個執行緒再某一時刻同時操作乙個共享資源。在某一時刻,只能有乙個執行緒可以獲取互斥鎖,在釋放互斥鎖之前其他執行緒都不能獲取該互斥鎖。如果其他執行緒想要獲取這個互斥鎖,則執行緒只能以阻塞方式進行等待。互斥鎖是是一種sleep waitin...