執行緒的handle和tid

2021-05-27 16:11:00 字數 556 閱讀 4604

執行緒是cpu分配時間執行任務的最小單位。在linux中,核心並沒有執行緒和程序的概念,所謂執行緒,只是可以和其他兄弟執行緒共享資源的程序。

在posix中,pthread_create建立執行緒,並將執行緒的handle或者說id傳遞給第乙個引數,在這還是稱其為handle。這個handle與pthread_self獲取到的值相同。程式中,getpid函式會得到程序的程序號,這個程序號是有規律的,且可以使用ps檢視到。但是,把handle列印出來,會發現這是乙個沒什麼規律的值。在linux中,核心並不是通過handle來識別乙個執行緒,而是使用tid確定唯一的執行緒。執行緒函式中,tid可以通過syscall(sys_gettid)獲取。但是在其他執行緒中要如何通過乙個執行緒的handle獲取它的tid?i5/os作業系統中,有pthread_getunique_np函式可以通過handle獲取tid,而其他系統就沒有這個函式了。我們可以自己山寨乙個pthread_getunique_np函式。

/proc目錄下存放有程序的資訊,就是那些數字的目錄。程序目錄下的task目錄存放所有該程序所建立的執行緒目錄;stat檔案和status檔案裡可以檢視程序的執行時間和占用記憶體大小。

UI執行緒與handle

handler是主線程和子執行緒的紐帶,當應用程式啟動時,android首先會開啟乙個主線程 也就是ui執行緒 主線程 為管理介面中的ui控制項,進行事件分發。如果此時需要乙個耗時的操作,例如 聯網讀取資料,或者讀取本地較大的乙個檔案的時候,你不能把這些操作放在主線程中,如果你放在主線程中的話,介面...

Linux下獲取執行緒TID的方法

如何獲取程序的pid process id 可以使用 include pid t getpid void 通過檢視標頭檔案說明,可以得到更詳細的資訊 find usr include name unistd.h usr include asm unistd.h usr include bits un...

根據執行緒ID獲取其Handle

今天看到一處對執行緒id與handle的敘述,似乎有點問題。書中原文 為了安全防護的緣故,你不可能根據乙個執行緒的id而獲得其handle。摘自第一篇 上路吧,執行緒 中第二章 執行緒的第一次接觸 第三節 核心物件 第一段末尾 而根據msdn的描述,我們是可以通過openthread,根據執行緒id...