windows - Windows 上的互斥锁和事件

标签 windows events mutex

为什么我们需要 Windows 中的 Mutex 和 Events?从某种意义上说,Windows 不能只有 Mutex 吗?什么是 Event 可以完成而 Mutex 不能完成的?

最佳答案

Events 允许线程阻塞,直到某个事件(因此得名)被广播。阻止事件意味着“发生事情时叫醒我”;你希望被安眠。事件是一种信号机制,并提供互斥锁所没有的支持,例如一旦等待它的人被唤醒,就能够自动清除信号。此外,API 允许阻塞,直到发出多个事件的信号为止。其中一个所有

互斥量(Mutual Exclusion)则是一种共享资源的范围协调机制。想想交易。您不希望等待,而是想访问某些共享资源,只有在其他人已经在访问它的情况下,您才会阻止。

如果您尝试使用互斥体模拟事件,您将面临这样的问题,即一旦您获得了锁(此时应该表示“事件发出信号”),您就会将其他人拒之门外,直到您释放该锁.这不是发出事件信号的语义;它可能会保持发布状态,并且“门”将为每个测试事件的线程打开,而无需获取任何锁。

关于windows - Windows 上的互斥锁和事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3727467/

相关文章:

javascript - 捕获事件和冒泡事件之间的区别

multithreading - 如何在 OS X 内核中实现带有超时的递归互斥锁?

javascript - 如何在windows中获取实时时间

windows - 在 64 位 Windows 上运行 cURL

javascript - 上传图片时如何传递参数?

来自动态加载组件的父级的 angular2 typescript 调用方法

python - QMutexLocker() 导致 UI 卡住

c - 等待单个对象 : do not lock a mutex but check the current state?

c - 如何将参数传递给 DLL 初始化(例如,通过 LoadLibrary 加载时)?

windows - 如何从 WSL (Ubuntu) 中启动 Windows 上 native 安装的 Atom 或 VSCode?