gpt4 book ai didi

c++ - C++中的多线程,只检查信号量是否被锁定

转载 作者:太空狗 更新时间:2023-10-29 20:03:52 25 4
gpt4 key购买 nike

我正在尝试使用 C++ 解决我在 Windows 上遇到的问题。

假设我有线程 A B C 和线程 Z。A B C 和 Z 都通过套接字向应用程序发送数据。但是当 Z 正在传输数据时,我希望 A B 和 C 等待 Z 完成,然后继续。

A B C 可以同时向应用程序发送数据。

我正在尝试使用互斥锁来防止 A B C 在 Z 运行时运行,但我发现即使 Z 未运行,A B C 也不会因为该互斥锁而同时运行。

所以我的问题最终是,C++ 中是否有一种方法可以让我检查互斥量是否已锁定,如果已锁定,则等待互斥量解锁,但不要锁定互斥量?

我从不希望 A、B 和 C 锁定互斥体。只有 Z 应该锁定互斥体。

如有任何帮助,我们将不胜感激。

最佳答案

有一种锁叫做 "readers-writer lock"这可能会解决你的问题。它适用于可以有多个并发读取器但一次只有一个写入器的对象(并且写入器将读取器锁定)。这听起来与您的应用程序非常相似,其中 A、B 和 C 被视为读者,而 Z 被视为作者。

关于c++ - C++中的多线程,只检查信号量是否被锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24945636/

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