yhara.jp

Recent Posts

asyncを使わずに並行処理をやる方法はないのか

2023-09-13
Tech

メモです。

なぜasyncな関数と普通の関数は互換性がないのか

  • async funcはステートマシンにコンパイルされるから
    • (いやまあ別にそういう決まりはないけど、JS/Rust/C#はいずれもそうしている)

asyncを使わずに並行処理をやる方法はないのか

  • ある。一つはThread
    • ただスレッドだけだと、時間がかかる処理をやっているスレッドは何もせず待っていることになる
    • そういったスレッドばかりだと効率が悪い
    • このためJavaはvirtual threadという機能を試している
  • 一つはスタックフルコルーチン
    • Luaのcoroutine、RubyのFiber、Goのgoroutine
    • async/awaitと違い関数に色がつかない
    • その代わりコルーチンのスケジューラをランタイムとして持つ必要があるので、サイズを小さくしたい場面では不利
      • Goをwasmで動かすことはできるがRust等と比べるとサイズがでかくなる
  • 一つは一級継続

More posts

Posts

(more...)

Articles

(more...)

Category

Ads

About

About the author