gpt4 book ai didi

c++ - C++中基于超时的并发队列

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:36:09 30 4
gpt4 key购买 nike

我正在尝试使用具有以下语义的 POSIX 线程 + C++ 开发并发队列:

  1. 一些线程可能会调用 push(item, timeout) 并且如果元素的添加在时间超时之前没有发生,则必须拒绝它。
  2. 一些线程可能会调用 pop(item, timeout) 并且如果元素的删除在时间超时之前没有发生,则必须拒绝它。
  3. 一些线程将始终调用 push(item) 和 pop(item),这意味着这些总是完成——没有指定时间界限。

我的问题:

  1. 我认为优先考虑超时的线程是有意义的。所以我使用 pthread 调度来为有超时的线程分配更高的优先级。这是我唯一可以采取的方法吗?
  2. 尽管改变了线程优先级,但一些超时的线程必须被拒绝。如何将这些保持在最低限度?

最佳答案

调整线程优先级时应该非常小心。上述策略最明显的问题是没有超时的线程可能会饿死。如果推送没有超时,这并不一定意味着它的消息是否被发送并不重要。

最小化超时完全是应用程序的责任。如果您不希望您的作者超时,请确保读者足够快地阅读消息。

不过,我不得不说,我发现混合计时和非计时服务员(至少在同一侧)的想法相当奇怪。您是否有一些特定的用例?

关于c++ - C++中基于超时的并发队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4057378/

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