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

时间:2019-05-19 02:12:10

标签: python python-3.x multithreading

我有一组线程可以在python中执行同步方法。当前,当线程进入关键部分时,如果没有线程执行关键部分,它将进入关键部分。否则,请等待并在释放锁定后进入关键部分。 (它可以像同步一样工作)。但是我有一个高优先级线程,无论低优先级线程是否在关键部分中,都应进入关键部分。这可能吗?如果可以,我该如何实施?

2 个答案:

答案 0 :(得分:2)

正如另一个很好描述的答案,这是不可能的,没有办法做到。

您可以并且经常应该做的是防止其他低优先级线程在高优先级线程之前先进入此关键部分。

即如果某个线程正在保存关键部分,则该线程需要先退出它。但是到那时,可能有多个线程在等待这个关键部分,某些优先级较低。在这种情况下,您可能要确保更高优先级的线程首先获得关键部分。

答案 1 :(得分:1)

一个线程获取了互斥锁,然后其他线程无法释放该临界区,直到它释放它为止。换句话说,您无法满足您的要求。

线程完全由Scheduling process控制,并且不知道哪个线程将是第一个获取互斥锁的线程。

之所以不能这样做,很简单,因为互斥锁的全部目的是防止其他线程做您想做的事情。

例如,如果一个线程已经在关键部分中,并且另一个线程可以访问它(例如,通过暂停该部分中已经存在的线程),那么race condition很有可能会发生。