线程激发状态

        当线程正在执行时,线程对象处于未激发状态。当线程结束时,线程对象就被激发了。因此,任何线程如果等待的是一个线程对象,将会在等待对象结束时被调用,因为当时线程对象自动变成激发状态。

        一旦没有任何线程拥有mutex,这个mutex便处于激发状态。因此,如果没有任何线程拥有那个mutex,Wait...()便会成功。反过来说,当线程拥有mutex时,它便不处于激发状态。如果有某个线程正在等待一个未被激发的mutex,它便将进入"blocking"状态,也就是说,该线程会停止执行,直到mutex被其拥有者释放并处于激发状态。

 

 

1、mutex是semaphore的一种退化。如果你产生一个semaphore并令最大值为1,那就是一个

mutex。也因此,mutex又常被称为binary semaphore。如果某个线程拥有一个binary

semaphore,那么就没有其他线程能够获得其拥有权。在Win32中,这两种东西的拥有权的意

义完全不同,所以它们不能够交换使用。semaphores不像mutexes,它并没有所谓的"wait

abandoned"状态可以被其他线程侦测到。
2、TerminateThread()强迫其行动目标(一个线程)结束,手段激烈而有力,甚至不允许

该线程有任何"挣扎"的机会。这带来的副作用便是,线程没有机会在结束前清理自己。对

线程而言,这可能导致前功尽弃。这个函数不会在目标线程中丢出一个异常情况

(exception),目标线程在核心层面就被根本抹杀了。目标线程没有机会捕捉所谓的"结束

请求",并从而获得清理自己的机会。还有就是目标线程的堆栈没有被释放掉,于是可能会

引起一大块内存泄露(memory leak)。而且,任何一个与此线程有附着关系的DLLs也都没

有机会获得"线程解除附着"的通知。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值