如果正在使用 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 协程)中的一些数据来通知()该上下文以返回到某个元素。
这里的关键是提取协程上下文(一些 id),然后通知 await 命令并传入这个 rval 项。
关于如何在没有锁的情况下有效地做到这一点的任何想法?