让高优先级python线程进入关键部分,而低优先级线程在关键部分执行

让高优先级python线程进入关键部分,而低优先级线程在关键部分执行,python,python-3.x,multithreading,Python,Python 3.x,Multithreading,我有一组线程可以在python中执行同步方法。当前,当线程到达临界段时,如果没有线程执行临界段,它将进入临界段。否则,等待并在释放锁后进入临界段。(它的工作原理与应该工作的同步一样)。但是我有一个高优先级的线程,不管低优先级的线程是否在关键部分,它都应该进入关键部分。这可能吗?如果是这样的话,我如何实现这一点呢?如果一个线程已经获得了互斥锁,那么在它释放互斥锁之前,任何其他线程都不能进入该关键部分。换句话说,你不能做你所要求的 线程完全由控制,不知道哪个线程将首先获取互斥 您不能这样做的原因很简

我有一组线程可以在python中执行同步方法。当前,当线程到达临界段时,如果没有线程执行临界段,它将进入临界段。否则,等待并在释放锁后进入临界段。(它的工作原理与应该工作的同步一样)。但是我有一个高优先级的线程,不管低优先级的线程是否在关键部分,它都应该进入关键部分。这可能吗?如果是这样的话,我如何实现这一点呢?

如果一个线程已经获得了互斥锁,那么在它释放互斥锁之前,任何其他线程都不能进入该关键部分。换句话说,你不能做你所要求的

线程完全由控制,不知道哪个线程将首先获取互斥

您不能这样做的原因很简单,因为互斥锁的全部目的是阻止其他线程执行您想执行的操作


例如,如果一个线程已经在关键部分,而另一个线程获得了对它的访问权(比方说暂停已经在该部分的线程),则发生错误的可能性很高。

正如另一个答案所描述的那样,这是不可能的,没有办法做到这一点

您可以而且通常应该做的是,在高优先级线程之前,防止另一个低优先级线程首先进入这个关键部分


也就是说,如果某个关键部分被某个线程占用,那么该线程需要首先退出它。但到那时,可能会有多个线程等待这个关键部分,一些低优先级,一些高优先级。在这种情况下,您可能需要确保高优先级线程首先获得关键部分。

明白了。这确实是不可能的。谢谢你的澄清,谢谢。如果您仔细想想,您实际上不需要给线程赋予优先级,因为线程的运行速度足够快,不会注意到任何差异。操作系统,有一个智能和良好的调度程序,确保这一点。请别忘了投我的票。是的。。我为我的问题找到了一些间接的解决方案。你可以编写自己的修饰符,将锁应用于不只是优先的线程。这是一个非常好的主意!如果您将它与保持优先级的数据结构相结合,它可能会工作得很好!我没有想到这一点。回答得好!