Если я использую uvloop или asyncio, одна из возможностей, которую я пытаюсь изучить, - это если я выполняю какие-то действия и затем "жду условия".
Давайте рассмотрим следующий пример:
do_something()
zmq.send(stuff,coroutine_context)
rr = await (condition)
return rr
тогда какой-то другой процесс выполняет какую-то работу.
тогда сопрограмма по этому процессу имеет:
rval = zmq.recv()
look at rval and get coroutine_context.
notify (condition) pass in rval.
Теперь я знаю, что могу использовать что-то вроде условной переменной, но для этого требуется какая-то блокировка. Меня не волнует доступ нескольких людей к этой сопрограмме, поэтому я не хочу ничего блокировать. Я просто хочу уведомить () этот контекст с некоторыми данными в этой другой сопрограмме (сопрограмма zmq), чтобы вернуться к некоторому элементу.
Ключом здесь является извлечение контекста сопрограммы (некоторый идентификатор), чтобы затем уведомить команду await и передать этот элемент rval.
есть идеи, как сделать это эффективно без блокировок?