事件(event)与互斥量(mutex)区别
2012-04-19 10:07
232 查看
事件(event)与互斥量(mutex)区别
事件(event)
事件是用来同步地位不相等的线程的,事件可以用来使一个线程完成一件事情,然后另外的线程完成剩下的事情。事件的使用很灵活,自动事件的激发态是由人工来控制的,而Mutex在释放(releaseMetux)后就一直处于激发态,直到线程WaitForSingleObject。事件可以用来控制经典的读写模型和生产者和消费者模型。相应的方式为,生成者等待消费者的消费,再消费者消费完后通知生产者进行生产。
互斥量(Mutex)
Mutex是排他的占有资源,一般用于地位相等的线程进行同步,每个线程都可以排他的访问一个资源或代码段,不存在哪个线程对资源访问存在优先次序。一个线程只能在Mutex处于激发态的时候访问被保护的资源或代码段,线程可以通过WaitForSingelObject来等待Mutex,在访问资源完成之后,ReleaseMutex释放Mutex,此时Mutex处于激发态。Mutex具有成功等待的副作用,在等待到Mutex后,Mutex自动变为未激发态,直到调用ReleaseMutex使Mutex变为激发态为止。自动事件也具有成功等待的副作用。手动事件没有,必须ResetEvent使手动事件变为未激发态。进程和线程也没有成功等待的副作用。当线程或者进程函数返回时,线程内核对象变为激发态,但WaitForSingleObject并没有使线程或者进程的内核对象变为未激发态。
总之,事件一般用于控制线程的先后顺序,而Mutex一般用于排他的访问资源。
事件(event)
事件是用来同步地位不相等的线程的,事件可以用来使一个线程完成一件事情,然后另外的线程完成剩下的事情。事件的使用很灵活,自动事件的激发态是由人工来控制的,而Mutex在释放(releaseMetux)后就一直处于激发态,直到线程WaitForSingleObject。事件可以用来控制经典的读写模型和生产者和消费者模型。相应的方式为,生成者等待消费者的消费,再消费者消费完后通知生产者进行生产。
互斥量(Mutex)
Mutex是排他的占有资源,一般用于地位相等的线程进行同步,每个线程都可以排他的访问一个资源或代码段,不存在哪个线程对资源访问存在优先次序。一个线程只能在Mutex处于激发态的时候访问被保护的资源或代码段,线程可以通过WaitForSingelObject来等待Mutex,在访问资源完成之后,ReleaseMutex释放Mutex,此时Mutex处于激发态。Mutex具有成功等待的副作用,在等待到Mutex后,Mutex自动变为未激发态,直到调用ReleaseMutex使Mutex变为激发态为止。自动事件也具有成功等待的副作用。手动事件没有,必须ResetEvent使手动事件变为未激发态。进程和线程也没有成功等待的副作用。当线程或者进程函数返回时,线程内核对象变为激发态,但WaitForSingleObject并没有使线程或者进程的内核对象变为未激发态。
总之,事件一般用于控制线程的先后顺序,而Mutex一般用于排他的访问资源。
相关文章推荐
- 临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别
- 临界区(Critical Section),互斥量(Mutex),信号量(Semaphores),事件(Event) 的区别
- Windows 临界区CRITICAL_SECTION,内核事件Event,互斥量Mutex,信号量Semaphore
- Windows 临界区CRITICAL_SECTION,内核事件Event,互斥量Mutex,信号量Semaphore
- 互斥对象(Mutex)、事件对象(Event) 与 关键代码段(CriticalSection) 的比较(互斥量Mutex 保证只有一个实例运行)
- 互斥量(mutex)与事件(event)的使用
- 互斥量(mutex)与事件(event)的使用
- Windows下Critical Section、Event、Mutex、Semaphores区别
- Linux中临界区、互斥量、信号量、自旋锁和事件的区别与联系
- js事件之event.preventDefault()与event.stopPropagation()用法区别
- 临界区,互斥量,信号量,事件的区别
- 临界区,互斥量,信号量,事件的区别
- event:stopPropagation停止事件流和触摸事件吞掉事件流区别
- 临界区、互斥量、信号量、事件的区别
- 各种Mutex(互斥量)的区别
- 临界区,互斥量,信号量,事件的区别
- 临界区,互斥量,信号量,事件的区别
- 互斥同步-临界区,互斥量,信号量,事件的区别
- (zz)Event 和 Mutex的区别
- 信号量,互斥量,事件,临界区有什么区别?