我的程序在主线程内打开了一个信号量。之后主线程产生两个子线程。其中一个子线程对这个信号量Down一次。之后,这个线程在试图对这个信号量进行一次Up操作时失败。错误值6 INVALID_HANDLE。奇怪了。哪位知道是什么原因?

解决方案 »

  1.   

    进程中的所有线程都能正常使用所有 WIN32  句柄对象!
    返回 INVALID_HANDLE 不是线程出问题, 而是你的代码, 请仔细检查你的代码
      

  2.   

    windows对象是所有线程共享的,所以这样用不会有问题。线程是并发执行的,如果出现非法句柄,可以检查一下你关闭这个对象的时机是否正确,如果你在一个线程中关闭了这个句柄,那么你必须保证在你不关闭之后,另一个线程不会再访问这个对象。很可能是你关闭句柄之后,在另外一个线程访问这个对象。关闭之后把句柄值设置为NULL,可能可以看出问题。