线程ID和线程句柄有什么区别?为什么两者都需要?Windows和Linux之间有区别吗?
据我所知,Linux的pthread库没有线程句柄的概念。pthread_create和其他pthreads函数,返回线程ID。
在Windows下,线程句柄不同于线程ID,就像文件句柄不同于文件名一样。
线程句柄是一个令牌,它使您可以对线程执行某些操作(通常等待或杀死它)。Win32具有用于许多对象的这些标记,并且通常将它们称为HANDLE。
令牌本质上是正在运行(或已停止)线程的指针,并且具有与之相关的一组功能,例如,您可以拥有一个句柄,该句柄允许您等待而不是杀死线程。以同样的方式,我们可以拥有一个只读的文件句柄。
这种间接级别可能有用也可能没有用,但这是Win32做到的方式,并且与它处理其他类型对象的方式基本一致。