Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kotlinのcoroutine、async/awaitと同じでしょ?って思ってたけど意外と洗...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
takuya kikuchi
October 25, 2019
210
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kotlinのcoroutine、async/awaitと同じでしょ?って思ってたけど意外と洗練されててすごいなぁって思った話をさせてほしい
2019-10-25 VALU社内LT資料です
takuya kikuchi
October 25, 2019
More Decks by takuya kikuchi
See All by takuya kikuchi
AIエージェントを支える設計
tkikuchi1002
13
4.8k
「現場で活躍するAIエージェント」を実現するチームと開発プロセス
tkikuchi1002
8
3.1k
20250708_engineering_bd
tkikuchi1002
0
170
Agentic Workflowという選択肢を考える
tkikuchi1002
1
1.8k
生成AI時代のソフトウェアエンジニアが持つべきケイパビリティを考える
tkikuchi1002
8
6.4k
RAGをテーマに考える、LLMの認知アーキテクチャとソフトウェア設計
tkikuchi1002
3
1.9k
生成AIの不確実性と向き合うためのオブジェクト指向設計
tkikuchi1002
3
7.8k
Azure AI SearchとPromptFlowではじめるRAG
tkikuchi1002
2
1.7k
法人向けChatGPTにおける Azure OpenAI Serviceの課題解決の過程と現在
tkikuchi1002
2
2.4k
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
180
The Curse of the Amulet
leimatthew05
2
13k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
270
Six Lessons from altMBA
skipperchong
29
4.3k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Between Models and Reality
mayunak
4
360
WENDY [Excerpt]
tessaabrams
11
38k
Transcript
,PUMJOͷDPSPVUJOFɺBTZODBXBJUͱಉ ͡Ͱ͠ΐʁͬͯࢥ͚ͬͯͨͲҙ֎ͱચ࿅ ͞Ε͍ͯͯ͢͝ͳ͊ͬͯࢥͬͨΛͤ͞ ͯ΄͍͠ 5BLVZB,JLVDIJ
༰ w $Ͱ͓ͳ͡ΈͷBTZODBXBJUʹ͋ͨΔͷ͕,PUMJOͰ ͑ΔΑ͏ʹͳͬͯخ͍͠ͳ w ,PUMJOͷDPSPVUJOFɺจ๏͕ͪΐͬͱચ࿅͞Εͯͯૉఢ ͩͳͬͯࢥͬͨ w ʮؒҧ͍ʹ͍͘ʢFSSPSQSPOFͰͳ͍ʣʯจ๏ʹͯ͋͠ ΔɺͬͯυΩϡϝϯτʹ܁Γฦ͠ॻ͍ͯ͋Δɻ͖
BTZODBXBJU $ private static async Task<int> 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!
,PUMJODPSPVUJOF suspend fun heavyWork(): Int { /// ॏ͍ॲཧ sleep(1000) println("done!")
return 0 } fun main() { GlobalScope.launch { heavyWork() heavyWork() heavyWork() } } > done! done! done!
ݟൺͯΈΔ private static async Task<int> 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() } }
ݟൺͯΈΔ private static async Task<int> 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() } }
ͬ͘͟Γͨ͠ϧʔϧ 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<int> 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() } }
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(); }
ҰํLPUMJOͰ w TVTQFOEGVODUJPOΛɺඇTVTQFOEGVODUJPO͔Β ݺͼग़ͦ͏ͱ͢ΔͱίϯύΠϧΤϥʔͩΑ
w $͍͍͚Ͳ,PUMJOΑ͍ w ޙൃڧ͍