通过阅读此处的文档和问题/答案,Python中没有“公平”的信号量,这意味着在压力条件下,某些线程可能会饿死。
在this thread (fair-semaphore-in-python)中,答案建议使用事件队列,每次结束工作的线程都会向下一个线程发出安全启动信号。问题在于最后一个线程将永远等待以信号通知下一个线程,该线程不存在,因此永远不会到来。
我的问题是,是否有一种方法可以在Python中实现公平的信号量? threading.queue
对象公平吗? (既然如此,那么应该有可能重新实现acquire()
方法,直到它到达队列的末尾并强制公平)。