package Ġsample Ċ Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġkotlin . native . concurrent . is Frozen Ċ Ċ fun Ġmain () Ġ{ ĊĠ ĠPlatform . is Memory Leak Checker Active Ġ= Ġfalse ĊĊĠ Ġsetup Threading () ĊĊĠ Ġprintln ("\ n \ n --------------- ") ĊĊĠ Ġ// Ġ 1 ) ĠSimple ĠState ĊĠ Ġ// ĠJust Ġyour Ġusual Ġmutable Ġstate , Ġin Ġthe Ġmain Ġthread . ĊĠ Ġrun Simple State () ĊĊĠ Ġ// Ġ 2 ) ĠF rozen ĠState ĊĠ Ġfreeze Some State () ĊĠ Ġfail Changes () ĊĠ Ġfreeze Children () ĊĊĠ Ġ// Ġ 3 ) ĠGlobal ĠState Ċ // Ġ Ġcant Change This () ĊĠ Ġcan Change Thread Local () ĊĠ Ġthread Local Different Threads () Ċ // Ġ Ġcompanion Also Frozen () ĊĠ Ġglobal Count ing () Ċ // Ġ Ġglobal Count ing Fail () Ċ // Ġ Ġglobal Count ing Shared Fail () ĊĊĠ Ġ// Ġ 4 ) ĠBackground ĊĠ Ġbasic Background () ĊĠ Ġcapture State () ĊĊĠ Ġrun Blocking Ġ{ ĊĠĠĠ Ġval Ġsd Ġ= ĠSome Data (" Hello ĠðŁ ¥ ¶ ", Ġ 6 7 ) ĊĠĠĠ Ġprintln ("${ sd . is Frozen }") ĊĊĠĠĠ Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠ Ġval Ġsd 2 Ġ= ĠSome Data (" Hello ĠðŁ ¥ ¶ ", Ġ 6 7 ) ĊĠĠĠĠĠ Ġprintln (" sd 2 Ġ${ sd 2 . is Frozen }") ĊĠĠĠĠĠ Ġdelay ( 1 0 0 ) ĊĠĠĠĠĠ Ġprintln (" sd 2 Ġ 2 Ġ${ sd 2 . is Frozen }") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġa () Ċ Ċ // Ġ Ġcapture Too M uch () Ċ // ĠĠĠ Ġcapture Too M uch Again () Ċ // ĠĠĠ Ġcapture Args () ĊĊĠ Ġ// Ġ 5 ) ĠDebug ging Ċ // ĠĠĠ Ġensure Never Frozen Fail Now () Ċ // ĠĠĠ Ġensure Never Frozen Fail Later () Ċ // ĠĠĠ Ġensure Never Frozen Background () Ċ // ĠĠĠ Ġcapture Too M uch Init () ĊĊĠ Ġ// Leave Ġthis Ġplease ... ĊĠ Ġteardown Threading () ĊĊĠ Ġprintln (" --------------- \ n \ n ") Ċ }