http://www.zeromq.org/blog:multithreading-magic
基于消息的 ZeroMQ 框架在不使用锁的情况下实现并发/多线程应用程序。
问题> 对于以下示例,它实际上是如何工作的?
例如:
我们有两个客户端,每个客户端都从同一个数据库中读取数据,然后放回修改后的结果。
ClientA: Read data A, modified A.value = A.value + 1 then write data A back to database
ClientB: Read data A, modified A.value = A.value + 2 then write data A back to database
问题> 我不知道如何用 ZeroMQ 实现这样的系统,这样我就不需要锁来控制 ClientA 和 ClientB 的行为。如何防止以下情况的发生。
ClientA read data A first
ClientB read data A second
ClientB write data A back // now data.value has been increased by two
ClientA write data A back // now the conflict! because the original value of A has been
// modified by ClientB and ClientA has no information about it.
// If ClientA writes the A back without knowing the update A
// then the changes made by ClientB will be voided.
ZeroMq 如何在不使用锁的情况下通过使用它的消息来解决这样的问题?
谢谢