gpt4 book ai didi

在 C 中为 *nix 创建线程安全的定时队列

转载 作者:IT王子 更新时间:2023-10-29 00:37:12 27 4
gpt4 key购买 nike

我程序的一部分创建了某种消息。然后在第二部分处理这些消息。

我的程序各部分之间需要某种定时队列,可以将消息保存在内存中 X 秒。当这个定时队列存在时,X 不改变。

理想情况下,这应该是这样的:

tqueue_t *tqueue_new(int seconds);
int tqueue_push(tqueue_t *queue, void *msg);
void *tqueue_pop(tqueue_t *queue);

tqueue_pop() 应该在第一条消息在队列中等待 X 秒时阻塞并返回。

最好的方法是什么?也许有一些已经存在的解决方案?

语言:C

操作系统:*nix

另外,这个队列应该在线程环境中工作。

最佳答案

您应该能够在 POSIX Message Queues 之上构建它让它处理大部分细节。像这样的东西:

(1)写带有时间戳字段的队列

(2) 在您的其他线程中,要么阻塞 mq_receive()直到收到消息(或使用 mq_notify() 为您发出信号或创建线程)。

(3)读取队列,查看时间戳。

(4)计算你要等多久的时间差,用select()或者一些 sleep /定时器机制。

(5) 处理消息。

关于在 C 中为 *nix 创建线程安全的定时队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4724302/

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