Slide 1

Slide 1 text

,PUMJOͷDPSPVUJOFɺBTZODBXBJUͱಉ ͡Ͱ͠ΐʁͬͯࢥ͚ͬͯͨͲҙ֎ͱચ࿅ ͞Ε͍ͯͯ͢͝ͳ͊ͬͯࢥͬͨ࿩Λͤ͞ ͯ΄͍͠ 5BLVZB,JLVDIJ

Slide 2

Slide 2 text

಺༰ w $Ͱ͓ͳ͡ΈͷBTZODBXBJUʹ͋ͨΔ΋ͷ͕,PUMJOͰ΋ ࢖͑ΔΑ͏ʹͳͬͯخ͍͠ͳ w ,PUMJOͷDPSPVUJOF͸ɺจ๏͕ͪΐͬͱચ࿅͞Εͯͯૉఢ ͩͳͬͯࢥͬͨ w ʮؒҧ͍ʹ͍͘ʢFSSPSQSPOFͰ͸ͳ͍ʣʯจ๏ʹͯ͋͠ ΔɺͬͯυΩϡϝϯτʹ܁Γฦ͠ॻ͍ͯ͋Δɻ޷͖

Slide 3

Slide 3 text

BTZODBXBJU $ private static async Task HeavyWork() { // ͳΜ͔͍͢͝ॏ͍ͨॲཧ await Task.Delay(1000); Console.WriteLine("done!"); return 0; } static void Main(string[] args) { Task.Run(async () => { await HeavyWork(); await HeavyWork(); await HeavyWork(); }).Wait(); } > done! done! done!

Slide 4

Slide 4 text

,PUMJODPSPVUJOF suspend fun heavyWork(): Int { /// ॏ͍ॲཧ sleep(1000) println("done!") return 0 } fun main() { GlobalScope.launch { heavyWork() heavyWork() heavyWork() } } > done! done! done!

Slide 5

Slide 5 text

ݟൺ΂ͯΈΔ private static async Task HeavyWork() { // ͳΜ͔͍͢͝ॏ͍ͨॲཧ await Task.Delay(1000); Console.WriteLine("done!"); return 0; } static void Main(string[] args) { Task.Run(async () => { await HeavyWork(); await HeavyWork(); await HeavyWork(); }).Wait(); } suspend fun heavyWork(): Int { /// ॏ͍ॲཧ sleep(1000) println("done!") return 0 } fun main() { GlobalScope.launch { heavyWork() heavyWork() heavyWork() } }

Slide 6

Slide 6 text

ݟൺ΂ͯΈΔ private static async Task HeavyWork() { // ͳΜ͔͍͢͝ॏ͍ͨॲཧ await Task.Delay(1000); Console.WriteLine("done!"); return 0; } static void Main(string[] args) { Task.Run(async () => { await HeavyWork(); await HeavyWork(); await HeavyWork(); }).Wait(); } suspend fun heavyWork(): Int { /// ॏ͍ॲཧ sleep(1000) println("done!") return 0 } fun main() { GlobalScope.launch { heavyWork() heavyWork() heavyWork() } }

Slide 7

Slide 7 text

ͬ͘͟Γͨ͠ϧʔϧ w BTZODBXBJUʢ$ʣ w ඇಉظ࣮ߦ͍ͨؔ͠਺͸5BTL5Λฦ͢Α͏ʹ࣮૷͢Δ w BTZODؔ਺͸ඞͣ5BTL5ܕΛฦ͢ w BTZODؔ਺಺ͰͷΈɺ5BTL5ΛBXBJUՄೳ w BXBJU͠ͳ͔ͬͨ৔߹͸ɺ'JSF'PSHFU w DPSPVUJOF LPUMJO w ඇಉظ࣮ߦ͍ͨؔ͠਺͸TVTQFOEGVODUJPOʢதஅؔ਺ʣͱͯ͠ఆٛ͢Δ w TVTQFOEGVODUJPOͷ໭Γ஋ͷܕʹറΓ͸ͳ͠ w TVTQFOEGVODUJPO͸ɺTVTQFOEGVODUJPO಺෦ͰͷΈݺͼग़ͤΔ private static async Task HeavyWork() { // ͳΜ͔͍͢͝ॏ͍ͨॲཧ await Task.Delay(1000); Console.WriteLine("done!"); return 0; } static void Main(string[] args) { Task.Run(async () => { await HeavyWork(); await HeavyWork(); await HeavyWork(); }).Wait(); } suspend fun heavyWork(): Int { /// ॏ͍ॲཧ sleep(1000) println("done!") return 0 } fun main() { GlobalScope.launch { heavyWork() heavyWork() heavyWork() } }

Slide 8

Slide 8 text

BTZODBXBJUͰ͋Γ͕ͪͳࣄނ w BXBJU͠๨Ε w BTZODؔ਺֎Ͱ΋ɺBXBJUͳ͠ͳΒݺ΂ͪΌ͏ w ҙຯΛΑ͘ཧղͤͣʹίʔυॻ͍ͯͨΓ͢Δͱ΍Γ͕ͪ w େ఍ࣄނΔ static void Main(string[] args) { Task.Run(async () => { HeavyWork(); HeavyWork(); HeavyWork(); }).Wait(); } static void Main(string[] args) { HeavyWork(); HeavyWork(); HeavyWork(); }

Slide 9

Slide 9 text

ҰํLPUMJOͰ͸ w TVTQFOEGVODUJPOΛɺඇTVTQFOEGVODUJPO͔Β
 ݺͼग़ͦ͏ͱ͢ΔͱίϯύΠϧΤϥʔͩΑ

Slide 10

Slide 10 text

w $΋͍͍͚Ͳ,PUMJO΋Α͍ w ޙൃ͸ڧ͍