Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Asyncで 非同期処理を 少しだけ楽に書く/ ruby_with_async

Asyncで 非同期処理を 少しだけ楽に書く/ ruby_with_async

622e438138519f0b3c2dbd50bc64a5a9?s=128

Wataru Morita

May 08, 2019
Tweet

More Decks by Wataru Morita

Other Decks in Technology

Transcript

  1. "TZODͰ ඇಉظॲཧΛ গָ͚ͩ͠ʹॻ͘ @tascript e-ZUKA Tech Night

  2. ;͋Έ 森田 亘(たすくん@tascript) GMOペパボエンジニア Nuxt、Vue、TypeScript

  3. 3VCZͰ ඇಉظॲཧΛॻ͖͍ͨ

  4. બ୒ࢶ Thread(並列処理) Fiber(並行処理) fork(プロセスの複製) etc…

  5. ߟྀ͢΂͖఺ I/O待ちによるGVL(Giant VM lock)の解放 スレッドセーフなのか プリエンプティブ/ノンプリエンティブによるコンテキストスイッチ スレッドの増加によるコードの複雑化

  6. Ԟ͕ਂ͍

  7. ߟ͑Δ͜ͱ͕ଟ͘ͳΔ

  8. "TZODͰ ඇಉظॲཧΛ ޮ཰తʹॻ͚Δ

  9. "TZOD 非同期I/Oのフレームワーク 内部ではFiberを使用 JavaScriptのasync/awaitっぽい 簡潔なシンタックスで非同期処理が実装可能

  10. 'JCFS ノンプリエンプティブな軽量スレッド 親子関係のスレッドを作成 親子間でコンテキストスイッチ コルーチンに近い ਌ ࢠ ࣌ؒ

  11. جຊతͳૢ࡞ Asyncブロックで非同期処理を宣言 taskメソッド(read、write、sleep) 同期処理と非同期処理が明瞭になる

  12. 'JCFSͷΈͰ࣮ࢪ 同期処理と非同期処理で関数を変更 DRYとはなにか

  13. BTZODBXBJUͬΆ͘ 非同期処理の結果を待機する 結果によって例外処理も書きやすい 同期が必要なポイントが確認しやすい

  14. ࢖͍ॴ ブロッキングI/Oによるボトルネックの解消 非同期処理のネスト、コールバックが発生し始めた 非同期処理の結果について例外処理を書きたい 非同期処理も簡潔に書きたい