[#1582] [BUG] Regexp — sinara@...

原です。あけましておめでとうございます。

16 messages 1997/01/06

[#1705] 正規表現 単独の ? — Sinichiro Dezawa <dezawa@...>

出沢です

14 messages 1997/01/15

[#1771] rectangle of canvas widget — Noritugu Nakamura <nnakamur@...>

18 messages 1997/01/19

[#1788] Text of TkCanvas — Noritugu Nakamura <nnakamur@...>

28 messages 1997/01/20
[#1800] Re: Text of TkCanvas — matz@... (Yukihiro Matsumoto) 1997/01/21

まつもと ゆきひろです.

[#1802] Re: Text of TkCanvas — Noritugu Nakamura <nnakamur@...> 1997/01/21

[#1806] Re: Text of TkCanvas — matz@... (Yukihiro Matsumoto) 1997/01/22

まつもと ゆきひろです.

[#1816] Re: Text of TkCanvas — Noritugu Nakamura <nnakamur@...> 1997/01/22

[#1819] Re: Text of TkCanvas — matz@... (Yukihiro Matsumoto) 1997/01/22

まつもと ゆきひろです.

[#1865] ruby-1.0-960124 available — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

25 messages 1997/01/24
[#1878] Re: ruby-1.0-960124 available — WATANABE Hirofumi <watanabe@...> 1997/01/27

わたなべです.

[#1879] Re: ruby-1.0-960124 available — matz@... (Yukihiro Matsumoto) 1997/01/27

まつもと ゆきひろです.

[#1880] Re: ruby-1.0-960124 available — WATANABE Hirofumi <watanabe@...> 1997/01/27

わたなべです.

[#1890] Re: ruby-1.0-960124 available — matz@... (Yukihiro Matsumoto) 1997/01/27

まつもと ゆきひろです.

[#1926] [Dist] Mutex module — keiju@... (Keiju ISHITSUKA)

けいじゅ@SHLジャパンです.

81 messages 1997/01/28
[#1929] Re: [Dist] Mutex module — matz@... (Yukihiro Matsumoto) 1997/01/29

まつもと ゆきひろです.

[#1934] Re: [Dist] Mutex module 1997/01/29

けいじゅ@SHLジャパンです.

[#1935] Re: [Dist] Mutex module — matz@... (Yukihiro Matsumoto) 1997/01/29

まつもと ゆきひろです.

[#1938] Re: [Dist] Mutex module 1997/01/29

けいじゅ@SHLジャパンです.

[#1940] Re: [Dist] Mutex module — matz@... (Yukihiro Matsumoto) 1997/01/29

まつもと ゆきひろです.

[#1944] Re: [Dist] Mutex module 1997/01/29

けいじゅ@SHLジャパンです.

[#1947] Re: [Dist] Mutex module — matz@... (Yukihiro Matsumoto) 1997/01/29

まつもと ゆきひろです.

[#1960] Re: [Dist] Mutex module — sinara@... 1997/01/30

原です。

[#1969] Re: [Dist] Mutex module 1997/01/30

けいじゅ@SHLジャパンです.

[#1978] Re: [Dist] Mutex module — sinara@... 1997/01/30

原です。

[#1986] Re: [Dist] Mutex module 1997/01/30

けいじゅ@SHLジャパンです.

[#1989] Array as list/tupple (Re: [Dist] Mutex module) — matz@... (Yukihiro Matsumoto) 1997/01/31

まつもと ゆきひろです.

[#2008] [Request] static var? (Re: Array as list/tupple) — sinara@... 1997/01/31

原です。

[#1953] open (file descriptor) — j_kuro@... (Jun Kuroda)

黒田です.

16 messages 1997/01/29

[ruby-list:1728] Re: [Q] Use of Thread and Mutex

From: matz@... (Yukihiro Matsumoto)
Date: 1997-01-16 12:08:05 UTC
List: ruby-list #1728
まつもと ゆきひろです.

In message "[ruby-list:1724] Re: [Q] Use of Thread and Mutex"
    on 97/01/16, sinara@blade.nagaokaut.ac.jp <sinara@blade.nagaokaut.ac.jp> writes:
|
|原です。
|
|一連の thread がらみのレポートに対して、まつもとさんの反応が
|あまりないけど(^^; 、、、単なるぼやきだと思われたかな?

いやあ,ちゃいます.本業とのコンテキストスイッチの間に情報
が落ちちゃったみたいです(ぼけてるともいう).

|【1】[ruby-list 1669] で述べた

|が Segmentation fault で落ちる件ですが、最新バージョンでは落ちなく
|なりました。

こっそり直しました.見つかっちゃいましたね.

|【2】[ruby-list 1696] で述べた thread.rb の class Queue は、うま
|く動作しないことがあるのではないかという話ですが、確かに次のスク
|リプトは、結構早く止まってしまいます。

|やはり、まずいみたいです。

そうですね.popを保護したらちゃんと動作するようになったみた
いです.うーむ,threadは難しい.
|
|【3】[ruby-list 1696] で言ったように、Hash#[]= は、thread に対し
|て保護されていないようです。

|これを動かすと、20回に1回ほど10秒ぐらいで停止します。
|Thread.exlusive を使うとこれは起こらないので、class Mutex の方
|も若干甘い所があるのではないでしょうか?

そうかもしれません.こちらも書き換えてみました.たぶん,直っ
たのだと思います.

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

--- thread.rb~	Thu Dec 19 10:20:54 1996
+++ thread.rb	Thu Jan 16 20:18:01 1997
@@ -41,10 +41,12 @@
   end
 
   def unlock
-    @locked = FALSE
-    if w = @waiting.shift
-      w.run
+    w = FALSE
+    Thread.exclusive do
+      @locked = FALSE
+      w = @waiting.shift
     end
+    w.run if w
   end
 
   def synchronize
@@ -95,19 +97,21 @@
   end
 
   def push(obj)
-    @que.push obj
-    if t = @waiting.shift
-      t.run
+    t = FALSE
+    Thread.exclusive do
+      @que.push obj
+      t = @waiting.shift
     end
+    t.run if t
   end
 
   def pop non_block=FALSE
-    if @que.length == 0
-      raise ThreadError, "queue empty" if non_block
-      @waiting.push Thread.current
-      Thread.stop
+    Thread.exclusive do
+      return @que.shift if @que.length > 0
     end
-    @que.shift
+    raise ThreadError, "queue empty" if non_block
+    @waiting.push Thread.current
+    Thread.stop
   end
 
   def empty?

In This Thread