gpt4 book ai didi

c - 线程同步和设置线程的优先级

转载 作者:可可西里 更新时间:2023-11-01 02:47:12 26 4
gpt4 key购买 nike

我有一个发送线程和 40 个工作线程。有一个队列。所有 40 个线程都写入队列,发送方线程定期从共享队列读取数据并通过 tcp 套接字发送读取的数据(比如每 1 秒后,发送方线程必须从队列中读取数据并通过套接字发送).我在这里有一个问题:

  1. 如果 40 个线程中有任何一个在临界区中,所有其他线程也在等待进入临界区,同时 1 秒计时器已到,我想忽略所有其他线程进入临界区的请求临界区,并且发送线程现在必须获得优先权并且必须被赋予临界区。

换句话说,我想将发送方线程的优先级设置为 1,即当发送方线程调用 EnterCriticalSection() 时,必须忽略等待进入临界区的所有其他线程,一旦临界区空闲,它必须提供给发送者线程。有什么办法可以实现这个功能吗?

最佳答案

你不能只使用优先级来实现它,因为如果任何工作线程持有锁,那么优先级不能强制他们释放它。这是我能想到的一种实现..

一旦发送线程在 1 秒后醒来,它就会向工作进程发送一个信号。在信号处理程序中释放由工作人员持有的锁(我想二进制信号量在这里会很好,所以在信号处理程序中将其值设置为 0),因此无论工作线程尝试访问它都会被阻止。在发送方发送所有数据包,最后再次将信号量设置回 1。

这是一个实现,你可以这样想,但最终它应该可以工作。:)

关于c - 线程同步和设置线程的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17441183/

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