Event和Mutex区别
来源:互联网 发布:nginx 多域名负载 编辑:程序博客网 时间:2024/05/16 12:31
4月11日
(原创)Event和Mutex区别
事件
事件是用来同步地位不相等的线程的,事件可以用来使一个线程完成一件事情,然后另外的线程完成剩下的事情。事件的使用很灵活,自动事件的激发态是由人工来控制的,而Mutex在释放(releaseMetux)后就一直处于激发态,直到线程WaitForSingleObject。事件可以用来控制经典的读写模型和生产者和消费者模型。相应的方式为,生成者等待消费者的消费,再消费者消费完后通知生产者进行生产。
Mutex
Mutex是排他的占有资源,一般用于地位相等的现在进行同步,每个线程都可以排他的访问一个资源或代码段,不存在哪个线程对资源访问存在优先次序。一个线程只能在Mutex处于激发态的时候访问被保护的资源或代码段,线程可以通过WaitForSingelObject来等待Mutex,在访问资源完成之后,ReleaseMutex释放Mutex,此时Mutex处于激发态。Mutex具有成功等待的副作用,在等待到Mutex后,Mutex自动变为未激发态,直到调用ReleaseMutex使Mutex变为激发态为止。自动事件也具有成功等待的副作用。手动事件没有,必须ResetEvent使手动事件变为未激发态。进程和线程也没有成功等待的副作用。当线程或者进程函数返回时,线程内核对象变为激发态,但WaitForSingleObject并没有使线程或者进程的内核对象变为未激发态。
事件是用来同步地位不相等的线程的,事件可以用来使一个线程完成一件事情,然后另外的线程完成剩下的事情。事件的使用很灵活,自动事件的激发态是由人工来控制的,而Mutex在释放(releaseMetux)后就一直处于激发态,直到线程WaitForSingleObject。事件可以用来控制经典的读写模型和生产者和消费者模型。相应的方式为,生成者等待消费者的消费,再消费者消费完后通知生产者进行生产。
Mutex
Mutex是排他的占有资源,一般用于地位相等的现在进行同步,每个线程都可以排他的访问一个资源或代码段,不存在哪个线程对资源访问存在优先次序。一个线程只能在Mutex处于激发态的时候访问被保护的资源或代码段,线程可以通过WaitForSingelObject来等待Mutex,在访问资源完成之后,ReleaseMutex释放Mutex,此时Mutex处于激发态。Mutex具有成功等待的副作用,在等待到Mutex后,Mutex自动变为未激发态,直到调用ReleaseMutex使Mutex变为激发态为止。自动事件也具有成功等待的副作用。手动事件没有,必须ResetEvent使手动事件变为未激发态。进程和线程也没有成功等待的副作用。当线程或者进程函数返回时,线程内核对象变为激发态,但WaitForSingleObject并没有使线程或者进程的内核对象变为未激发态。
总之,事件一般用于控制线程的先后顺序,而Mutex一般用于排他的访问资源。
- Event和Mutex区别
- Event和Mutex区别
- Event和Mutex区别
- CriticalSection、Event、Mutex、Semaphores区别
- Critical Section,Mutex,Semaphore,Event区别
- Critical Section,Mutex,Semaphore,Event区别
- 事件(event)与互斥量(mutex)区别
- Critical Section,Mutex,Semaphore,Event区别
- Critical Section,Mutex,Semaphore,Event区别
- Critical Section,Mutex,Semaphore,Event区别
- Mutex和Semaphore区别
- Mutex和Semaphore区别
- Windows下Critical Section、Event、Mutex、Semaphores区别
- Windows下Critical Section、Event、Mutex、Semaphores区别
- Windows下Critical Section、Event、Mutex、Semaphores区别
- Windows下Critical Section、Event、Mutex、Semaphores区别
- Windows下Critical Section、Event、Mutex、Semaphores区别
- Windows下Critical Section、Event、Mutex、Semaphores区别
- 键盘钩子
- 去掉二维数组重复值[算法]
- ping 的时候 ttl 参数所代表的意义
- sql2000 触发器的应用
- VC++ 6.0——MSComm控件
- Event和Mutex区别
- java File的基本操作实例(目录及文件的 新建/拷贝/移动)
- vb常用字符串处理函数
- C++调试时的错误例子及解决方法
- sql中常用动态的行转列
- 数据挖掘十大经典算法
- 如何去掉单文档界面上的工具条和状态栏
- 软件保护入口点安全及技术分析
- 判断图片类型