[#1562] Re: rbdj1227.lzh —
わたなべです.
[#1582] [BUG] Regexp — sinara@...
原です。あけましておめでとうございます。
まつもと ゆきひろです
原です。
まつもと ゆきひろです.
[#1583] jchop — WATANABE Hirofumi <watanabe@...>
わたなべです. おめでとう.
[#1614] [tk] Cannot execute some samples — Eiji-usagi-MATSUmoto <ematsu@...>
まつもと@ぴーえふゆーと申します。はじめまして。
[#1625] matz has back! — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#1639] Script for making Index of Ruby Manual — s.suda@...
須田です。
[#1655] [Q] Use of '==', 'eql?' and 'hash' — sinara@...
原です。
[#1667] [Q] Use of Thread and Mutex — sinara@...
原です。
まつもと ゆきひろです.
原です。
原です。
[#1670] [Q] Timeout in Socket (Re: [Q] Use of Thread and Mutex) — sinara@...
原です。
まつもと ゆきひろです.
[#1677] ruby-1.0-970110 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです.
[#1682] 組み込みクラスのメソッド .htm — (Dezawa Shin-ichiro) <dezawa@...>
出沢です
[#1688] Ruby 1.0-970110 on NeXTSTEP — SHIROYAMA Takayuki <psi@...>
[#1705] 正規表現 単独の ? — Sinichiro Dezawa <dezawa@...>
出沢です
まつもと ゆきひろです
matz> rubyの使っているGNUの正規表現ルーチンのデフォルトではパター
わたなべです.
まつもと ゆきひろです.
[#1720] ruby 1.0-970116 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです.
[#1723] in-place edit on djgpp/win32 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです.
[#1753] Usage of Menu — Noritugu Nakamura <nnakamur@...>
[#1762] ruby 1.0-970118 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#1771] rectangle of canvas widget — Noritugu Nakamura <nnakamur@...>
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです.
原です。
[#1788] Text of TkCanvas — Noritugu Nakamura <nnakamur@...>
まつもと ゆきひろです.
まつもと ゆきひろです.
まつもと ゆきひろです.
わたなべです.
[#1794] Filetest error on Ruby-DJ — s.suda@...
須田です。
[#1833] GD.c revised — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#1865] ruby-1.0-960124 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです.
わたなべです.
まつもと ゆきひろです.
まつもと@ぴーえふゆーです。
まつもと ゆきひろです.
まつもと@ぴーえふゆーです。
まつもと ゆきひろです.
まつもと@ぴーえふゆーです。
[#1871] None — (Dezawa Shin-ichiro) <dezawa@...>
でざわです
[#1875] toplevel of Tk — Noritugu Nakamura <nnakamur@...>
[#1899] [Dist] Mutex — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
[#1926] [Dist] Mutex module — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
けいじゅ@SHLジャパンです.
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
けいじゅ@SHLジャパンです.
原です。
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
原です。
出沢です
まつもと ゆきひろです.
原です。
[#1953] open (file descriptor) — j_kuro@... (Jun Kuroda)
黒田です.
まつもと ゆきひろです.
黒田です.
原です。
まつもと ゆきひろです.
[ruby-list:1669] Re: [Q] Use of Thread and Mutex
原です。
> まつもと ゆきひろです.
> |(1)
> 共有するデータの変更は基本的にMutexで保護する必要があります.
> 参照するだけなら必要ないです.しかし,実はrubyのthreadはかな
> りnon-preemptiveなところがあるので,
> # つまり安全なタイミングでしか切替えが起きない
>
> | v.push "abc"
> |
> |はどうでしょう?
> |
> | v["ABC"] = "abc"
> |
> |は?
>
> はちゃんと動く可能性があります.でも,保護しておいた方が安全
> でしょう.将来のrubyがちゃんとしたthreadを使うようにならない
> と言う保証は無いですから.
わかりました。実は上の2つは結構ちゃんと動いているみたいなので、
質問しました。
> |(2)Thread: deadlock 、、、とかいうメッセージを出してプログラム
> |が停止することがありますが、このメッセージが出れば必ず ruby のバ
> |グといえますか?それともこちらのプログラムのアルゴリズムに検討す
> |べきところがあるのでしょうか?
>
> rubyのバグでなければdeadlockが起きています.たとえばthreadが
> お互いの終了を待ってブロックしてしまったりするとdeadlockにな
> ります.
そうなんですか、そういうチェックが入っているんですね。
ときどき deadlock を起こすこちらのプログラムは、複数のスレッドが
互いに「ただ一つのみの Mutex オブジェクトを、synchronize をのみ
を使ってブロックする」だけなのですが、この条件で deadlock を起こ
す可能性は無いと思うのですが、勘違いかな。
とここまで書いて気がついたけどつぎのスクリプトで deadlock が
作れますね。
----^ deadlock_test.rb
#!/usr/local/bin/ruby
require "thread"
m = Mutex.new
Thread.start {
m.synchronize {
m.synchronize {
}
}
}
m.synchronize {
m.synchronize {
}
}
----$ deadlock_test.rb
synchronize のネストがないかどうか、自分のスクリプトを点検してみ
ることにします。^^;
とろこで、つぎのスクリプトでは deadlock エラーが起こらずプログラ
ムが停止します。
----^ deadlock_test1.rb
#!/usr/local/bin/ruby
require "thread"
m = Mutex.new
m.synchronize {
m.synchronize {
}
}
----$ deadlock_test1.rb
自分のスレッドでかけたロックにチェック機構が働いてないので
しょうか?
次の例では Segmentation falut で落ちます。
----^ deadlock_test2.rb
#!/usr/local/bin/ruby
require "thread"
m = Mutex.new
Thread.start {
m.synchronize {
m.synchronize {
}
}
}
sleep 1
----$ deadlock_test2.rb
どれも linxu 1.2.13 ELF で、です。
---===-=-=-=-=-=-=-=-=======--=-=-=-==-=-===-=-=-=-=-=-=--=-==-=--
Shin-ichro Hara(Nagaoka Univ.of Tech.)