我正在使用zeromq,celluloid创建一个异步应用程序。我需要维护依赖于某些响应的不同任务的状态。我可以通过在响应参数中发送有关状态的数据来完成此操作。但是有没有更好的方法呢?
发布于 2015-09-21 13:12:28
使用唯一标识的Conditions
等待回复。
这个问题非常抽象/模糊,所以我将尽我所能给你一个函数示例。如果我的理解/猜测正确的话,这就是你需要做的:
UUID
的Celluloid::Internals::UUID.generate
。UUID
与数据一起发送。Condition
,通过在所述对象中阻塞所需的数据,在线程安全的Hash
中定位Condition
,通过阻塞所述对象中的wait
……而不是直接处理响应。所声明的对象不应该意识到0MQ
,因为它被设计为无状态...它应该与一个层进行通信,该层发出请求,接收响应,并将响应传递给请求它的对象,而不会丢失所述对象的状态,也不会在请求或响应中传递状态信息。
这一策略被即将推出的ECell
大量使用。希望您已经在使用celluloid-zmq
gem来支持事件式0MQ
。
https://stackoverflow.com/questions/32396654
复制