觸發檢測器我已經寫了線程掛起檢測器,其打印一些調試輸出(回溯等)時一些線程意外掛起。每個想要觀看的線程都會在掛起檢測器系統中註冊自己,指定一些超時(在我的情況下爲5秒),並經常調用一些IAmAlife()
函數(在我的情況下大約每1-10ms)。線程掛起通過過程停止或應用N ap個
它的偉大工程。但是,在某些情況下,我得到誤報。例如,當我在SIGSTOP
這個進程中稍後恢復時,它會被觸發(例如,當用GDB/LLDB等調試器進行連接時)。而且很少,當這個過程沒有太多時,只是空轉,我猜MacOSX的App Nap會啓動,它也會觸發掛機檢測器。
我怎麼能檢測出這種系統掛起?查看處理器時間(clock()
)並沒有多大幫助,因爲如果我的應用程序處於死鎖狀態,它可能不會消耗太多(如果有的話)處理器時間。