package Ġchapter 7 . actor Ċ Ċ import Ġkotlinx . coroutines . experimental . Common Pool Ċ import Ġkotlinx . coroutines . experimental . async Ċ import Ġkotlinx . coroutines . experimental . run Blocking Ċ Ċ // ĠThis Ġmethod Ġwill Ġuse Ġan Ġactor Ġto Ġprint Ġthe Ġcorrect Ġvalue Ġalways Ċ fun Ġmain ( args : ĠArray < String >) Ġ= Ġrun Blocking Ġ{ ĊĠĠĠ Ġval Ġworker A Ġ= Ġasync Increment ( 2 0 0 0 ) ĊĠĠĠ Ġval Ġworker B Ġ= Ġasync Increment ( 1 0 0 ) ĊĠĠĠ Ġval Ġworker C Ġ= Ġasync De crement ( 1 0 0 0 ) ĊĊĠĠĠ Ġworker A . await () ĊĠĠĠ Ġworker B . await () ĊĠĠĠ Ġworker C . await () ĊĊĠĠĠ Ġprint (" counter Ġ[ ${ get Counter ()} ]") Ċ } Ċ Ċ fun Ġasync Increment ( by : ĠInt ) Ġ= Ġasync Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġby ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactor Counter . send ( Action . INCRE ASE ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġasync De crement ( by : ĠInt ) Ġ= Ġasync ( Common Pool ) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġby ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactor Counter . send ( Action . DECRE ASE ) ĊĠĠĠ Ġ} Ċ }