Если вы записываете в Pipe
, текущий поток блокирует до завершения записи.Следовательно, задержки нет (или, скорее, вызывающий поток не может их наблюдать), но возможно deadlock ;Pipe
является инструментом более низкого уровня, чем Queue
.
Ситуация с SyncManager.Queue
заключается в том, что все запросы к менеджеру синхронизированы , так что процесс, который выдвигает объектзатем не может наблюдать, что он по-прежнему пуст (отсутствует всплывающее окно).
Между тем, «бесконечно малая» задержка означает просто задержку планирования потока, а не (возможно, намного большее) время записи всего объекта: достаточночтобы запустил , чтобы установить, что Queue
не пустой.Тем не менее, толкающая нить может выиграть гонку и наблюдать, что ей по-прежнему не хватает объекта, «уже выдвинутого».