我創建了兩個用C代碼編寫的線程,它在Linux操作系統上運行。這兩個線程都在做一些工作,並且它的父進程還在運行時會永久運行。如何知道線程是否處於死鎖狀態?
創建這些線程的過程是以一定的時間間隔向systemd
發送一個看門狗通知。但是,在發送看門狗通知之前,它想要檢查所有線程是否處於非死鎖狀態。
在代碼中可以使用哪種系統調用,或者可以使用哪種機制來知道線程不處於死鎖狀態,以便進程可以檢查其創建的線程是否處於死鎖狀態,並且只發送如果所有線程都處於非死鎖狀態,則向systemd
發送看門狗通知。
當線程即將獲取系統資源時,爲父線程存儲時間戳。當線程獲取系統資源時,使時間戳無效。如果父線程看到時間戳超過某個限制,它可以聲明系統已死鎖。 – user3386109
通過爲父線程存儲時間戳,你的意思是什麼?父線程如何知道該子線程即將獲取系統資源。請您分享一個示例示例來實現我的目標 –
操作系統無法以任何有效的方式確定此示例。您需要在您的應用設計中進行這樣的檢查,如果您需要,可以設計它,並且如果可以實現它,而不會引入比解決問題更多的問題。 –