package Ġcom . github . co dy oss . coroutine . example . synchron ize Ċ Ċ import Ġkotlinx . coroutines . experimental . Common Pool Ċ import Ġkotlinx . coroutines . experimental . run Blocking Ċ import Ġkotlinx . coroutines . experimental . sync . Mutex Ċ import Ġkotlinx . coroutines . experimental . sync . with Lock Ċ Ċ private Ġvar Ġcounter Ġ= Ġ 0 Ċ Ċ // ĠJust Ġlike Ġmany Ġother Ġlanguages , Ġsuch Ġas ĠC Ġor ĠGo , ĠKotlin Ġcan Ġmake Ġuse Ġof Ġmutex es Ġfor Ġcritical Ġsections . ĠThis Ġis Ġa Ġnice Ċ // Ġoption Ġif Ġnot Ġusing Ġthe Ġatomic Ġpackage Ċ private Ġval Ġmutex Ġ= ĠMutex () Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ= Ġrun Blocking Ġ{ ĊĠĠĠ Ġrun All The Cor outines ( Common Pool ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmutex . with Lock Ġ{ Ġcounter ++ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprintln (" Counter : Ġ$ counter ") Ċ }