4回目からの続き。
The actor model in 10 minutes
並列処理をするためにアクターモデルというのがあって、状態を管理するスレッド的なのがあって、そのスレッドに対して送受信することで状態を変更する。状態スレッドの持つ状態は所謂プライベートで外から変更できないので競合とかを気にしなくて良い。スレッドはメッセージボックス形式になってて、外からのメッセージを順次処理する、とかそういう雰囲気らしい。
てか上の記事や他の記事とかにもあるんだけど、「マルチスレッドとか難しい」「デッドロックとか怖い」ってコメントが散見されてて、C/C++で組み込みやってきた自分としては不思議に感じるところです。まぁ「let it crash」の考え方とか、そもそもサーバ的なのを想定してるぽいので、パラダイムが違うと言えばそういうものかも。
ともかく、そういうモデルを言語的にサポート?してるのがErlang、それをRubyぽく書けるようにしたのがElixirとか、そういう理解で良いんでしょうか。分かりません。
あと、今頃になって見つけたけど、ここを最初に見るべきだったぽい
Elixir School
並行性の項とか、自分レベルでも凄い分かりやすかった。spawnで軽量スレッドを起動、send/receiveでメッセージパッシング、monitorでスレッドの死活を監視。なるほどなー
もうちょっとだけ続けます