У меня есть несколько потоков, которые работают в фоновом режиме. В какой-то момент в программе пользовательский ввод (посредством набора приглашений) необходим для сбора информации, чтобы программа продолжала делать свое дело. Это будет происходить несколько раз по всей программе. То, как я сейчас это делаю, работает, но подвержено проблемам. Как «назначить» только один / первый поток для обработки пользовательских запросов без шансов того, что другие потоки рассылают пользователю такие же приглашения?
В настоящее время у меня есть следующее: (примечание: firstThread является глобальным )
prbsMutex.acquire()
if (firstThread == True):
self.userPrompt()
# set to false so other threads don't reprompt the user after lock is released
firstThread = False
prbsMutex.release()
# ....code to do things with user input...
#shortly after I reset the flag for when it loops back again
firstThread = False
Мне нужен способ сказать: «Поток 1 - это единственный поток, который должен запрашивать пользователя, в то время как другие потоки ждут его, пока FINI SH», но я не уверен как.