gpt4 book ai didi

multithreading - 在多线程管道中维护秩序

转载 作者:行者123 更新时间:2023-12-04 21:54:46 25 4
gpt4 key购买 nike

我正在考虑用于处理管道的多线程架构。我的主处理模块有一个输入队列,它从中接收数据包。然后它对这些数据包执行转换(解密等)并将它们放入输出队列。

线程进入许多输入数据包可以使其内容相互独立转换的地方。

然而,关键是输出队列必须与输入队列具有相同的顺序(即,第一个从输入队列中拉出的必须是第一个插入输出队列的,无论其转换是否首先完成。)

自然,输出队列会有某种同步,所以我的问题是:确保保持这种排序的最佳方式是什么?

最佳答案

让一个线程读取输入队列,在输出队列上发布一个占位符,然后将项目交给工作线程进行处理。当数据准备好时,工作线程更新占位符。当需要输出队列中的值的线程读取占位符时,它可以阻塞,直到相关数据准备好。

因为只有单个线程读取输入队列,并且该线程立即将占位符放在输出队列中,所以输出队列中的顺序与输入中的顺序相同。工作线程可以有很多,并且可以按任何顺序进行转换。

在支持 future 的平台上,它们是理想的占位符。在其他系统上,您可以使用事件、监视器或条件变量。

关于multithreading - 在多线程管道中维护秩序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3227042/

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