Electronic Joint Business

Solution for E-Business

Axum, 一切为了并行 (二)

[b]代理编程[/b] 上面的斐波那契数列的例子只是展示了一个微不足道的构建数据流网的例子。这类网络适合那些“数据流入,数据流出”的场景,但它不能指定数据如何在网络中传播,也不允许不同类型的数据流入或者流出网络。 代理与通道给了我们创建复杂数据流网所需的一切。 通过通道沟通的两个代理是种弱关系:它不需要知道或关系另一个代理是如何实现的。它们之间的“契约”只由通道指定。借用OOP中的概念,通道扮演了接口的角色,而代理则是实现了该接口的类。 使用通道时,你向输入端口发送数据,从输出端口接受数据,这里,输入端口扮演了目标,而输出端口扮演了源头。而实现通道时,输入端口则是源头,输出端口则是目标。这有点难以理解,想想家里的水处理机,如果水是数据的话,考虑水的流向,你把水倒入入水口(水相对于你是流出),从出水口接水(水相对于你是流入),而处理机内部而言,水则是从进水口流入,从出水口流出。 请看例子,有个“Adder”通道接受输入两个数字并得出二者之和。通道的使用者发送数字到输入端口Num1和Num2,并从输出端口Sum接收结果。MainAgent代理是通道的使用者,而AdderAgent实现了该通道。 channel Adder {         input int Num1;         input int Num2;         output int Sum; } agent AdderAgent : channel Adder {         public AdderAgent()     {         int result = receive(PrimaryChannel::Num1) + […]

, , , ,

2 thoughts on “Axum, 一切为了并行 (二)

Leave a Reply

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

Time limit is exhausted. Please reload CAPTCHA.