2007-04-02から1日間の記事一覧
はい。おしまいです。YARVソースコード勉強会第一部完です。さて次は何をやろうかなー。。。 Parrotを読む会 JRubyを読む会 とかいう前に、サボりすぎのSICM勉強会をなんとかしないとですねえ。うーん。
スレッド実行中にI/Oなどシステム関係の操作で処理がブロックするときは、グローバルロックを解除します。YARVのスレッドモデルでは、そうしないと他のスレッドまで一斉に止まってしまうので。これは、ブロックする処理を実装した関数へのポインタを rb_thre…
1個だけ実行するスレッドを、グローバルなMutexのロックという形で明示的に管理しているので、スレッドの切り替えの部分でもロックの取得/解放を明示的に実装することになります。これをやるのが rb_thread_schedule @ thread.c 関数。 void rb_thread_sche…
メインスレッド VMのメインスレッドに関する情報は、Init_VM 関数(2006-10-27 - ひとり勉強会)で記録されます。 Thread.new Thread.new による新規スレッド起動の流れを見ていきます。まず、Threadクラスの定義は Init_Thread @ thread.c です。 void Init…
YARV のスレッドモデルの概略をつかむのには、yarv-dev や ruby-dev のささださんの投稿を参考にしました。 http://www.atdot.net/~ko1/w3ml/w3ml.cgi/yarv-dev/msg/631 [ruby-dev:30202] Re: YARV の thread について 今のところは、model 2、つまり「一つ…
コンパイラ編(PPT or PDF)に引き続き、VM編のまとめスライドを作りました。 第11回〜第15回まとめ PowerPoint 第11回〜第15回まとめ PDF というわけで、最終回です。今日はマルチスレッド周りのソースを読んでいきます。