執行緒的識別符號是執行緒id,執行緒的id型別是std::thread::id,可以有兩種方式來獲取。第一種,可以通過執行緒關聯的thread object,呼叫object.get_id();如果object沒有關聯任何執行緒,那麼get_id()返回std::thread::id預設建構函式,即沒有執行緒。另一種方法是在當前執行的執行緒中呼叫std::this_thread::get_id()。
執行緒的id可以拷貝和比較。如果兩個執行緒id相等,那麼它們是同乙個執行緒,或者它們都沒有關聯到執行緒。如果兩個id不同,那麼它們是不同的執行緒,或者它們乙個關聯到執行緒,另乙個沒有關聯到執行緒。
std::thread::id提供了所有的比較操作符。可以使用關聯容器、排序或者比較。
常常使用執行緒id來判斷這個執行緒是否需要執行某些操作。例如,初始化執行緒建立了其他執行緒,用來執行演算法的不同部分。這時在建立其他執行緒前先把自己id記錄下來,之後建立其他執行緒。然後可以判斷當前執行緒是否是初始化執行緒。
std::thread::id master_thread;//記錄主線程(初始化執行緒)
void some_core_part_of_algorithm()
do_common_work();
}
執行緒id可以用作關聯容器的鍵。比如,可以使用容器來控制線程來儲存資訊和執行緒之間的資訊交換。
可以使用流輸出來輸出執行緒id
std::cout<
這個數值其實沒有什麼意義。標準庫只是保證比較兩個執行緒id時,如果id相同,那麼輸出結果相同,否則結果不同。這在除錯和記錄是非常有用。至於id具體數值,沒什麼意義。
管理執行緒之建立執行緒
基本的執行緒管理包括 1 建立執行緒。2 等待它結束或在後台執行。3 向執行緒函式傳遞引數,更改執行緒物件所有權。4 選擇執行緒和使用特定執行緒。void do some work std thread my thread do some work 這是最簡單的情況,std thread還可以使用可...
執行緒ID與執行緒ID
1 nptl標準 1.目前的執行緒實現是 native posix thread library,簡稱nptl 2.執行緒又被稱為輕量級程序。3.每乙個使用者態的執行緒,在核心之中都對應乙個排程實體也擁有自己的程序描述符 task struct結構體 4.程序內的所有執行緒呼叫 getpid 函式時...
執行緒 執行緒控制代碼 執行緒ID
什麼是控制代碼 控制代碼是一種指向指標的指標。我們知道,所謂指標是一種記憶體位址。應用程式啟動後,組成這個程式的各物件是住留在記憶體的。如果簡單地理解,似乎我們只要獲知這個記憶體的首位址,那麼就可以隨時用這個位址訪問物件。但是,如果您真的這樣認為,那麼您就大錯特錯了。我們知道,windows是乙個以...