gpt4 book ai didi

c++ - std::queue 是否具有事件机制(std::queue 中的信号)

转载 作者:太空狗 更新时间:2023-10-29 20:59:28 24 4
gpt4 key购买 nike

队列中是否有任何事件机制或预定义信号。如果队列中有任何数据或消息,队列应生成一个事件,说明数据已准备好处理。或者通知其他线程执行他的任务,而不是不断地轮询队列。

在 posix Message Queue 中有类似 mq_notify() 的函数,如果有数据进入 Message 队列,它会通知其他进程或线程,这样我们就可以避免轮询。

编辑

如果没有,那么我如何在 std::queue 上实现它。我想避免连续轮询,因为它会降低代码的性能。

每当队列中发生某些事件时,它应该通知其他人。

最佳答案

std::queue 是一种容器类型,而不是一种事件机制。我建议围绕实现消息队列的队列创建一个类。

编辑:好的,这样

因此,如果您使用具有相同类型的 boost,我建议使用 std::queue、std::mutex 和 std::condition_variable。将它们放入新的 Queue 类中,在推送时,您将锁定互斥量,推送到队列,解锁互斥量,并 notify_one() 条件。这样,只有在推送时才会通知条件变量。您可以对 pop 做同样的事情。

关于c++ - std::queue 是否具有事件机制(std::queue 中的信号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24523008/

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