Я создал следующую функцию, которая ожидает, когда потокобезопасное логическое значение будет изменено с 1 на 0, прежде чем продолжить:
from multiprocessing import Value
from time import sleep
blJobInProcess = Value('i',0)
#Function for which multiple threads will spin up
def awaitAndExecuteJob():
#Wait for Job to Free
while blJobInProcess.value:
sleep(5)
#Lock Queue
with blJobInProcess.get_lock():
blJobInProcess.value = 1
...
with blJobInProcess.get_lock():
blJobInProcess.value = 0
Как я могу гарантировать, что после того, как процесс освободит блокировку, а затем в цикле while
будет прочитано, что она установит блокировку и изменит значение на 1? Что если сразу после чтения, но до активации блокировки другой поток читает blJobInProcess
, а затем пытается выполнить задание, а не продолжать ждать?