线程伪句柄和线程真实的句柄是怎么个关系呢??能否作详细的解释?

解决方案 »

  1.   

     伪句柄和句柄都能代表一个核心对象,并且通过他们都能进行对核心对象的操作,比如CloseHandle等。   
        
      但是伪句柄只是一个壳,他在线程间传递的时候,句柄所引用的东西是目标对象的,不是自身的。也就是说,在不同的线程中,他映射的对象不一样。而且伪句柄在传递过程中不会引起引用计数的增减。   
        
      可以用DuplicateHandle将伪句柄转换成实句柄,同时源句柄引用计数加1。
      

  2.   

    线程伪句柄是一个特别的数,只是代表当前的线程句柄(假如将某个线程的伪句柄拿到另一个线程去使用,那么这个伪句柄实际操作另一个线程),并且不会影响线程对象的引用计数。使用后也不需要对其进行CloseHandle。线程的真实句柄:每个进程有一张内核对象表,这个表里放置进程内打开的所有内核对象,并给每个对象分配一个序号,线程句柄实际上就是 内核对象表中对应线程对象的序号。因此句柄与进程相关。在这个进程中的句柄在不能随意拿到另一个进程中使用,可以通过API进行句柄拷贝。打开一个句柄,会使线程对象的引用技术加一,CloseHandle会使线程对象引用计数减一,所以使用完句柄后需要进行关闭。
      

  3.   

    我想在linux下也会有一个类似于描述管道的结构体,有了这个结构体,估计要理解这个伪句柄以及句柄就更好了,这个结构体有人知道吗
      

  4.   

    暂时理解为,当前线程的句柄,这个伪句柄无论放在哪个线程操作就是哪个线程起了作用,Jeffry R是这么说的