[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:633

From: Yukihiro Matsumoto <matz ruby-lang.org>
Date: Fri, 30 Sep 2005 23:35:32 +0900
Subject: [yarv-dev:633] Re: thread support

まつもと ゆきひろです

In message "Re: [yarv-dev:631] Re: thread support"
    on Fri, 30 Sep 2005 22:10:41 +0900, SASADA Koichi <ko1 atdot.net> writes:

| たとえば、String オブジェクトの RSTRING(str)->ptr のような操作は排他制
|御が必要になる(これを全部排除しようとすると大変...)。これは、例えば
|ptr を取得したあと、スレッドスイッチが起こり、他のスレッドが str に対し
|て破壊的操作をして、ptr が指しているメモリオブジェクトを REALLOC なりし
|た場合、元のスレッドが free したメモリオブジェクトを参照してしまいます。
|
|ThreadA
|  ptr = RSTRING(str)->ptr;
|ThreadB (switch)
|  RSTRING(str)->ptr = other_memory_location;
|ThreadA (switch)
|  ptr[0]; /* error! */
|
| そのようなことが起こらないように、細かく排他制御を行わなければならな
|い。(排他制御を行わないが高速な実装を提供し、Ruby ユーザの責任、とする
|ことも出来るが、処理系として正しいかは謎)。

この件に関しては、Gaucheみたいにreallocやfreeを行わないのも
ひとつの考えかもしれません。もっともそれだとBoehm GCかその同
等品を必要とすることになるわけですが。

| また、今後の開発方針などに対してご意見などあればご教示ください。

私はm1でも平気ですが、世の中の要求はnative threadになんらか
の形で対応してほしいということのようです。

当面m2で、段階的に(たとえばVMはスレッドセーフにしてGIを開放
するが、C関数実行中はGIを使う、とか)m3に近づければ良いのでは
ないでしょうか。

| この辺のニーズの把握って、たとえば NaCl さんなんかでは何かデータあった
|りしますか。

うちでthreadを積極的に使った例はありません。

                                まつもと ゆきひろ /:|)

--
ML: yarv-dev quickml.atdot.net
使い方: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]

       628 2005-09-30 20:11 [ko1 atdot.net       ] thread support                          
       631 2005-09-30 22:10 ┣[ko1 atdot.net       ]                                       
->     633 2005-09-30 23:35 ┃┣[matz ruby-lang.org  ]                                     
       635 2005-10-01 23:41 ┃┃┗[ko1 atdot.net       ]                                   
       636 2005-10-02 10:58 ┃┃ ┗[shiro lava.net      ]                                 
       638 2005-10-02 18:15 ┃┃  ┗[ko1 atdot.net       ]                               
       640 2005-10-02 19:05 ┃┃   ┗[shiro lava.net      ]                             
       641 2005-10-02 21:23 ┃┗[shudo computer.org  ]                                     
       643 2005-10-03 09:33 ┃ ┗[ko1 atdot.net       ]                                   
       632 2005-09-30 23:28 ┗[matz ruby-lang.org  ]                                       
       634 2005-10-01 23:30  ┗[ko1 atdot.net       ]