ID je jedinečný číselný identifikátor vlákna běžícího v systému. Rukojeť vlákna, stejně jako jakýkoli ovladač objektu jádra, lze považovat za speciální typ referenčního počítaného ukazatele na objekt jádra.
Takže v prostoru jádra je objekt typu THREAD s ID =12345
A protože chcete s vláknem něco udělat, máte ve svém adresním prostoru ukazatel nazvaný threadID s hodnotou 44.
Vezměte prosím na vědomí, že různé handle stejného objektu jádra mají různé hodnoty (dva ukazatele na jeden objekt) a že objekty jádra mohou mít úchyty ve více než jednom procesu.
Linuxová knihovna pthread nemá, pokud vím, koncept ovladače vlákna. pthread_create a další funkce pthreads vracejí ID vlákna.
V systému Windows se popisovač vlákna liší od ID vlákna, stejně jako se popisovač souboru liší od názvu souboru.
Rukojeť vlákna je token, který vám umožňuje s vláknem něco dělat (obvykle na to čekat nebo je zabít). Win32 má tyto tokeny pro mnoho objektů a obecně je nazývá HANDLE.
Token je v podstatě ukazatel na běžící (nebo zastavené) vlákno a je s ním spojena sada schopností, například můžete mít rukojeť, která vám umožní čekat na vlákno, ale ne jej zabíjet. Stejným způsobem můžeme mít popisovač souboru, který je pouze pro čtení.
Tato úroveň nepřímosti může nebo nemusí být užitečná, ale je to způsob, jakým to dělá Win32, a je v zásadě konzistentní s tím, jak zachází s některými jinými typy objektů.
ID vláken jsou progresivní (tj. jedno po druhém), kterými můžete procházet. Úchyty vláken, jako většina úchytů ve Windows, jsou ve skutečnosti ukazatele. Můžete například nastavit bity vlastností vlákna pomocí úchytu vlákna – ale ne ID vlákna .