C 中如何判斷執行緒當前所處的狀態

2021-09-22 07:40:01 字數 977 閱讀 7907

**原文在c#中如何判斷執行緒當前所處的狀態

在c#中,執行緒物件thread使用threadstate屬性指示執行緒狀態,它是帶flags特性的列舉型別物件。

threadstate 為執行緒定義了一組所有可能的執行狀態。一旦執行緒被建立,它就至少處於其中乙個狀態中,直到終止。在公共語言執行時中建立的執行緒最初處於unstarted狀態中,而進入執行時的外部執行緒則已經處於running狀態中。通過呼叫 start可以將unstarted執行緒轉換為running狀態。並非所有的threadstate值的組合都是有效的;例如,執行緒不能同時處於aborted和unstarted狀態中。

因此判斷執行緒當前的狀態必須用bitmask按位運算來達到判斷目的,不能直接使用相等來判斷。

定義threadstate如下:   

1.判斷執行緒是否處於取消狀態

a.錯誤的判斷

(mythread.threadstate == threadstate.abortrequested)   

b.正確的判斷

(mythread.threadstate & threadstate.abortrequested) != 0

2.判斷執行緒是否處於執行狀態   

這個有一點特殊,因為threadstate.running本身等於0,不能用&運算,所以判斷可用以下方法:

(mythread.threadstate == threadstate.running)

沒有整理與歸納的知識,一文不值!高度概括與梳理的知識,才是自己真正的知識與技能。 永遠不要讓自己的自由、好奇、充滿創造力的想法被現實的框架所束縛,讓創造力自由成長吧! 多花時間,關心他(她)人,正如別人所關心你的。理想的騰飛與實現,沒有別人的支援與幫助,是萬萬不能的。

C 中如何判斷執行緒當前所處的狀態

原文在c 中如何判斷執行緒當前所處的狀態 在c 中,執行緒物件thread使用threadstate屬性指示執行緒狀態,它是帶flags特性的列舉型別物件。threadstate 為執行緒定義了一組所有可能的執行狀態。一旦執行緒被建立,它就至少處於其中乙個狀態中,直到終止。在公共語言執行時中建立的執...

在C 中如何判斷執行緒當前所處的狀態

在c 中,執行緒物件thread使用threadstate屬性指示執行緒狀態,它是帶flags特性的列舉型別物件。threadstate 為執行緒定義了一組所有可能的執行狀態。一旦執行緒被建立,它就至少處於其中乙個狀態中,直到終止。在公共語言執行時中建立的執行緒最初處於unstarted狀態中,而進...

C 中判斷執行緒的狀態

在c 中,執行緒物件thread使用threadstate屬性指示執行緒狀態,它 是帶flags特性的列舉型別物件。threadstate 為執行緒定義了一組所有可能的執行狀態 一旦執行緒被建立,它就至少處於其中乙個狀態中 直到終止。在公共語言執行時中建立的執行緒最初處於unstarted狀態中,而...