gpt4 book ai didi

c - 如何在C中创建线程的被动等待FIFO?

转载 作者:行者123 更新时间:2023-11-30 16:38:14 28 4
gpt4 key购买 nike

我正在尝试找出一种方法,将某些线程置于被动等待模式,并在它们到达屏障时将其唤醒。我有固定数量的线程应该到达。

我首先想到的是一个信号量,我将其初始化为 0,这样它会阻塞,但它们将以随机方式释放。我想实现一个系统,它可以像 FIFO 一样按照到达同步屏障的顺序释放线程。

我还考虑过使用 2 个信号量,这样会阻塞、释放线程并对其进行排序。如果线程是好的线程,那么它就会继续,如果不是,那么它会被第二个信号量阻塞。然而这个系统似乎有点漫长和挑剔。

有人有对我有帮助的想法或建议吗?

非常感谢:)

最佳答案

在 Linux 上,您可以仅使用条件变量和互斥体以相同的 FIFO 顺序阻止和取消阻止线程。

这是因为条件变量上的所有等待者都会按顺序追加到内核中的 futex 等待队列中。唤醒服务员按照相同的 FIFO 顺序进行。只要在发出条件变量信号时保持互斥体锁定即可。

但是,正如评论者提到的,依赖线程执行顺序是一个糟糕的主意。

关于c - 如何在C中创建线程的被动等待FIFO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47575242/

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