Twisted
正直にいうとごくごく最近まで MochiKit Deferred の由来が Twisted (Pythonの非同期ライブラリ) からきていると知らなかった……
Python のマルチスレッドってどうなってるんだろう。threading/thread とかがヒットする。
Ruby のスレッドはなんか頭つかわなくても書けるなぁ。なんでだろう……あと Ruby で Deferred は必要か、っていうのが微妙に最近ひっかかる。なんで Ruby には Deferred がないんだろう (つまり、なんでなくてもいいやって思えるんだろう)
JS だとスレッドがなくて、しかもいちいちブラウザに処理をもどさないと固まってしまうから Deferred がすごい威力を発揮するけど、スレッドがあったときに、Deferred はどう活躍するんだろう。(Python にはスレッドがあるっぽいけど、なんで Deferred が必要になったんだろう)
Ruby だと非同期な HTTP GET をやるなら
require "open-uri" # net/http はめんどいから
t = Thread.start do
open("http://example.com/") {|f|
f.read
}
end
p t.valueみたいになって、複数あつめてやるのをスレッドつかってかくと
require "open-uri"
t1 = Thread.start do
open("http://example.com/") {|f|
f.read
}
end
t2 = Thread.start do
open("http://example.com/") {|f|
f.read
}
end
[t1.value, t2.value].each do |i|
p i.length
endさらにつなげていこうとすると大変? そうでもない気がする。うーん
最初から非同期なやつだと (ぱっとでてこない)、めんどいかなぁ……
いやいやそもそも Deferred は非同期なやつをほげほげするやつなんだ。
Ruby だと非同期なメソッドがあんまりないから気にならないのかなぁ。