Skip to content

Actor实例

Henry edited this page Oct 12, 2019 · 1 revision

当希望实例所有方法都线程一致性执行的时候,可以在组件创建接口服务的时候指定对应的Actor的名称;每个不同名称的Actor都会在自己的独立线程中有序地执行相关方法,Actor的所有方法都是线程安全的。

创建Actor

客户端只需要在创接口代理的时候指定Actor名称即可,服务端会维护一致性;所以不同客户端同时创建同一名称的Actor也是不会出现冲突的情况。

            IAmountService henry = client.Create<IAmountService>("henry");
            IAmountService ken = client.Create<IAmountService>("ken");

以上代码针对IAmountService接口创建了两个Actor,它们之间都是隔离相互不影响,下面看一下接口的行为

   public interface IAmountService
    {
        Task<long> Income(long amount);
        Task<long> Payout(long amount);
        Task<long> Get();
    }

接口是一个简单的帐户操作,基于Actor模式下,所有客户端针对同一Actor的所有操作都是线程安全的。