等候鏈結周遊
等候鏈結周游 (WCT) 可讓調試程式診斷應用程式停止回應和死結。
等候鏈結是線程和同步處理物件的交替序列,其中每個線程會等候後續的物件。 後續的每個物件會接著由鏈結中的後續線程所擁有。
線程會等候同步處理物件,從線程要求物件到取得物件為止。 此 鎖定 是由線程從線程取得它的時間擁有,直到線程釋放它為止。 換句話說,當線程 1 等候線程 2 所擁有的鎖定時,線程 1 正在 等候 線程 2。
WCT 支援下列同步處理基本類型:
若要擷取一或多個線程的等候鏈結,請使用 OpenThreadWaitChainSession 和 GetThreadWaitChain 函式建立 WCT 會話。 WCT 工作階段是由 HWCT 類型的句柄表示。
會話可以是同步或異步的
您無法取消同步會話,並封鎖呼叫線程,直到擷取等候鏈結為止。
異步會話不會封鎖呼叫線程,而且可以使用 CloseThreadWaitChainSession 函式來取消應用程式。 異步操作的結果可透過 應用程式提供的 WaitChainCallback 回 呼函式來取得。
針對異步會話,呼叫端可以透過 GetThreadWaitChain 指定內容數據結構的指標。 這個相同的指標會傳遞至 WaitChainCallback 回呼函式。
內容數據結構是使用者定義且不透明的 WCT。 應用程式可以使用內容數據結構,在 WCT 查詢與回呼函式之間通訊內容。 一般而言,您會透過這個結構傳遞事件句柄,並在執行回呼時發出訊號,並通知監視線程查詢已完成。
如需等候鏈結周游的範例,請參閱 使用 WCT。