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

yarv-dev:647

From: SASADA Koichi <ko1 atdot.net>
Date: Tue, 04 Oct 2005 08:50:08 +0900
Subject: [yarv-dev:647] Ruby in Parallel

 ささだです。

 Ruby のスレッドが並列化したときのことをちょっと考えていたんですが、

・値の更新はアトミックを保障するか?

i = 0
[Thread.new{10000.times{i+=1}},
 Thread.new{10000.times{i+=1}}].each{|t| t.join}
p i

というプログラムは、20000 を (1) 表示しなければ *ならない* のか、(2) そ
んなのスレッドを使うプログラマの責任でしょうか。常識的に考えて (2) だと
思うのですが、Ruby はそうじゃあかん、というのはありますか。


・Thread.critical はサポートするか?

Thread.critical のリファレンスは

> 真である間、スレッドの切替えを行いません。カレントスレッドが停止 (stop)した場合やシグナルに割り込まれた場合には、自動的に false になります。

とありますが、すでに並列で動いてる場合はどうなりますかね。


-- 
SASADA Koichi at atdot dot net

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

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

->     647 2005-10-04 08:50 [ko1 atdot.net       ] Ruby in Parallel                        
       649 2005-10-04 09:09 ┣[matz ruby-lang.org  ]                                       
       650 2005-10-04 09:54 ┗[nobu.nokada softhome]                                       
       651 2005-10-04 20:47  ┗[ko1 atdot.net       ]