2011-02-24 59 views

回答

14

据我所知,Linux的pthread库没有线程句柄的概念。 pthread_create和其他pthreads函数,返回一个线程ID。

在Windows下,线程句柄与线程ID不同,与文件句柄与文件名不同。

线程句柄是一个令牌,它允许您对线程执行某些操作(通常等待或杀死它)。 Win32具有许多对象的这些标记,并将它们称为HANDLE。

该令牌本质上是一个指向正在运行(或已停止)线程的指针,并具有一组与其关联的能力,例如,您可以拥有允许您等待而不是终止线程的句柄。以同样的方式,我们可以有一个只读的文件句柄。

这种间接性级别可能有用也可能没有用,但它是Win32的做法,并且与它处理某些其他类型的对象的方式大体一致。

2

线程ID是渐进的(即一个接一个),您可以遍历。线程句柄,就像Windows中的大多数句柄一样,实际上是指针。 例如,您可以通过使用线程句柄来设置线程属性位,但不能使用线程ID。

4

ID是在系统中运行的线程的唯一数字标识符。像任何内核对象句柄一样,线程句柄可以看作是指向内核对象的特殊类型的引用计数指针。

所以在内核空间有一个与ID类型的线程的对象= 12345

因为你想要做的事跟你有一个指针在您的称为线程ID的地址空间与价值线44

请注意,对同一个内核对象的不同句柄具有不同的值(两个指向一个对象的指针),并且内核对象可以在多个进程中具有句柄。