Electronic Joint Business

Solution for E-Business

Axum, 一切为了并行 (三)

[b]域与状态共享[/b] 消息传递是种优秀的沟通机制,但它要消息中的数据必须可以被深拷贝或者不可变。但有时代理间共享数据会让程序更有效率,也更简单,当然,要提供一种安全的方式。 这就是设计出域的目的。域存在的目的是允许一组代理安全的共享状态,同时将该状态与其他人等隔离开来。 [b]在代理间共享状态[/b] 象普通类,域可以包含字段与方法,但更重要的,域定义可以包含代理的定义,在域内定义的代理可以存取域的字段。如 domain Chatroom {    private string m_Topic;    private int m_UserCount;    reader agent User : channel UserCommunication {         // …    }    writer agent Administrator : channel AdminCommunication{        // …    } } 这里声明的域Chatroom包含两个代理 User和Administrator。chatroom让许多不同的用户互相交换信息,(或在管理员间),并且读取域的状态,如m_Topic,但不能改变这些字段。administrator是唯一能改变域状态的代理。让我们更仔细的探讨一下reader和writer的区别。 [b]Reader与Writer的语义[/b] Reader和Writer锁相当普遍地用同步上,它允许在多个读用户或者一个写用户间存取一个共享资源。这保证了读用户总是看到资源的一致状态,且两个写用户不会彼此干扰。 Axum中的代理遵循同样的原则。声明成”reader”的代理只允许读域的状态,而写代理可以读写这个状态。既不是reader也不是writer的代理只能读取域内不可变状态。 在代理内可以用parent关键字来存取所在域的字段和方法。上面的User代理可以这样读取域的状态: reader agent […]

,

One thought on “Axum, 一切为了并行 (三)

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.