假设有两个线程,一个线程等待事件,一个线程触发事件。
使用CEvent类,我们可以在WaitForSingleObject执行前触发事件, WaitForSingleObject会立即返回。
而使用条件变量的notify_one在wait执行前触发事件,当执行到wait时会阻塞。
主要区别在于对状态的保存,CEvent会保存状态,条件变量不会,但可以通过对条件变量的再封装,使条件变量拥有类似CEvent的状态保存功能。
本文对比了使用CEvent类和条件变量在多线程编程中实现事件触发与等待的不同机制,特别是它们如何管理线程间的同步与状态。详细阐述了CEvent的事件状态保存功能以及条件变量在不同场景下的应用,通过实例说明了如何通过封装条件变量来获得类似CEvent的状态保存特性。
假设有两个线程,一个线程等待事件,一个线程触发事件。
使用CEvent类,我们可以在WaitForSingleObject执行前触发事件, WaitForSingleObject会立即返回。
而使用条件变量的notify_one在wait执行前触发事件,当执行到wait时会阻塞。
主要区别在于对状态的保存,CEvent会保存状态,条件变量不会,但可以通过对条件变量的再封装,使条件变量拥有类似CEvent的状态保存功能。
1680

被折叠的 条评论
为什么被折叠?