- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我刚刚意识到有 SignalObjectAndWait
Windows平台的API函数。但是已经有了SetEvent
和 WaitForSingleObject
.您可以将它们结合使用以实现与 SignalObjectAndWait
相同的目标。
基于MSDN , SignalObjectAndWait
比单独调用 SetEvent
和 WaitForSingleObject
更有效。它还指出:
A thread can use the
SignalObjectAndWait
function to ensure that a worker thread is in a wait state before signaling an object.
这句话我不是很理解,但是效率似乎并不是我们需要SignalObjectAndWait
的唯一原因。任何人都可以提供 SetEvent
+ WaitForSingleObject
无法提供 SignalObjectAndWait
提供的功能的场景吗?
最佳答案
我的理解是这个单一函数在避免以下情况的方式上更有效。
The
SignalObjectAndWait
function provides a more efficient way to signal one object and then wait on another compared to separate function calls such asSetEvent
followed byWaitForSingleObject
.
当你 SetEvent
和另一个 [esp.更高优先级] 线程正在等待此事件,线程调度程序可能会从信号线程中夺走控制权。当线程接收回控制权时,它所做的唯一事情是下面的WaitForSingleObject
调用,因此浪费了上下文切换这种小事。
使用 SignalObjectAndWait
提示内核说“嘿,无论如何我都会等待另一个事件,所以如果它对你有任何影响,不要过度地来回切换上下文” .
关于c++ - SignalObjectAndWait 考虑有 SetEvent 和 WaitForSingleObject 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18289229/
我刚刚意识到有 SignalObjectAndWait Windows平台的API函数。但是已经有了SetEvent和 WaitForSingleObject .您可以将它们结合使用以实现与 Sign
我是一名优秀的程序员,十分优秀!