Open12
Why choose async/await over threads?
背景電撃戦すき
The main function is preceded with the
async
keyword. This means that it is not a traditional function, but one that returns a state machine.
ステートマシンを返却する関数 ってどういう意味だ?
smol::Executor
ステートマシンの上位執行者???
↑ のコードを解説したまとめが
“So why wouldn’t we use threads?”
※ コンポーザビリティ=拡張性
Rustで並行処理を扱う場合にスレッドと非同期の2つの選択肢がある。
スレッドの方がOSネイティブでプログラムのモデルを変更する必要がなく簡単である。しかし、コンポーザビリティという観点では非同期の方が圧倒的に有利であり、どのような種類のストリームにも適用できるという利点がある。それが十分プログラマに伝わっておらず、スレッドの方が優れていると考えるプログラマもいる。非同期コミュニティはコンポーザビリティという利点より強調すべきであり、パフォーマンスだけでは非同期を選択する理由としては不十分である(そもそもユースケースによってパフォーマンスは変わってくる)。