[NAME] ALL.dao.concurrent.asyncobject [TITLE] Asynchronous Object [DESCRIPTION] An asynchronous object is a class instance that is created with asynchronous call mode, 1 async_objet = some_class( ... ) !! When an asynchronous object invokes a method, it will be automatically called in asynchronous mode, and start a tasklet and return a future value. Such tasklets are queued and and executed in the order they are queued. So such asynchronous object acts like an actor in the actor model considering that calling methods of such object is just like sending messages to the object with function parameters being the message contents. For each instance, these messages are processed one by one in the order of receiving. Here is an simple example, 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 acount1 = Account( 100 ) !! 30 acount2 = Account( 100 ) !! 31 32 future1 = acount1.Withdraw( 10 ) 33 if( future1.value() == $true ) future2 = acount2.Deposit( 10 ) 34 35 future3 = acount1.Deposit( 20 ) 36 37 io.writeln( 'Balance in account1:', acount1.Balance().value() ) 38 io.writeln( 'Balance in account2:', acount2.Balance().value() ) Like calling mt.start(), calling a method on an asynchronous object will return a future value, which can be used to check the status of the asynchronous call.