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

2022-03-23 11:13:17 字數 830 閱讀 2692

**原文在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狀態中,而...