Как я могу гарантировать синхронность между чтениями и блокировкой в ​​Python? - PullRequest
0 голосов
/ 28 июня 2019

Я создал следующую функцию, которая ожидает, когда потокобезопасное логическое значение будет изменено с 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, а затем пытается выполнить задание, а не продолжать ждать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...