Да, вы можете создать очередь FIFO , используя список идентификаторов потоков:
FIFO = [5,79,3,2,78,1,9...]
Вы попытались бы получить блокировку, а если не сможете, тогда нажмите идентификатор попытки воспроизведения (FIFO.insert(0,threadID)
) на переднюю часть очереди и каждый раз, когда вы отпустите блокировку, убедитесь, что если поток хочет получить блокировку, он должен иметь идентификатор потока в конце очереди (threadID == FIFO[-1]
). Если поток имеет идентификатор потока в конце очереди, то пусть он получает блокировку, а затем выталкивает ее (FIFO.pop()
). Повторите при необходимости.