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
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.7k
Azure AI SearchとPromptFlowではじめるRAG
tkikuchi1002
2
1.7k
法人向けChatGPTにおける Azure OpenAI Serviceの課題解決の過程と現在
tkikuchi1002
2
2.4k
Featured
See All Featured
Context Engineering - Making Every Token Count
addyosmani
9
970
Tell your own story through comics
letsgokoyo
1
950
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
How to build a perfect <img>
jonoalderson
1
5.6k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
620
Documentation Writing (for coders)
carmenintech
77
5.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Abbi's Birthday
coloredviolet
2
8.1k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
RailsConf 2023
tenderlove
30
1.5k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
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 ޙൃڧ͍