gpt4 book ai didi

c++ - 仅使用关键部分的 Win32 读/写锁定

转载 作者:可可西里 更新时间:2023-11-01 16:26:00 27 4
gpt4 key购买 nike

作为工作项目的一部分,我必须使用 Win32 api 在 C++ 中实现读/写锁。所有现有解决方案都使用需要在执行期间进行上下文切换的内核对象(信号量和互斥量)。这对我的应用程序来说太慢了。

如果可能的话,我想只使用关键部分来实现一个。锁不一定是进程安全的,只是线程安全的。关于如何解决这个问题有什么想法吗?

最佳答案

如果您可以针对 Vista 或更高版本,您应该使用内置的 SRWLock's .它们像关键部分一样轻量级,在没有争用时完全处于用户模式。

Joe Duffy 的博客最近有一些 entries关于实现不同类型的非阻塞读/写锁。这些锁是旋转的,所以如果你打算在拿着锁的同时做很多工作,它们就不合适了。代码是 C#,但应该可以直接移植到 native 。

您可以使用关键部分和事件实现读取器/写入器锁定 - 您只需要保持足够的状态以仅在必要时才发出事件信号,以避免不必要的内核模式调用。

关于c++ - 仅使用关键部分的 Win32 读/写锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1008726/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com