[NAME]
ALL.dao.concurrent.async-class

[TITLE]
异步类

[DESCRIPTION]

异步类是一种特殊的类,当这种异步类的对象调用一个方法时, 这个调用将被自动地当作异步调用处理
,并创建轻任务返回未来值。 这种轻任务将被存在一个队列里,并按它们存入队列的顺序执行。

因此,这种异步对象在行为上很类似 actor model 里的actor。因为这里调用这种对象的方法就跟给act
or发消息一样, 而调用参数即是消息内容。 对于每个异步对象,轻任务将按存入队列的顺序执行, 这基
本等同actor按消息将收顺序处理消息。

异步类的定义由在普通类的定义里的类名后加异步模式标志!!组成。 这里是个简单的例子: 
     
   1  class Account !!
   2  {
   3      private
   4  
   5      var balance = 0
   6  
   7      public
   8  
   9      routine Account( init = 0 ){
  10          balance = init
  11      }
  12      routine Withdraw( amount: int ) => enum<false,true>
  13      {
  14          if ( balance < amount ) return $false
  15          balance -= amount
  16          return $true
  17      }
  18      routine Deposit( amount: int ) => int
  19      {
  20          balance += amount
  21          return balance
  22      }
  23      routine Balance() => int
  24      {
  25          return balance
  26      }
  27  }
  28  
  29  var acount1 = Account( 100 )
  30  var acount2 = Account( 100 )
  31  
  32  var future1 = acount1.Withdraw( 10 )
  33  if( future1.value() == $true ){
  34      var future2 = acount2.Deposit( 10 )
  35  }
  36  
  37  var future3 = acount1.Deposit( 20 )
  38  
  39  io.writeln( 'Balance in account1:', acount1.Balance().value() )
  40  io.writeln( 'Balance in account2:', acount2.Balance().value() )