ruby-reference-manual:2917
From: Sho Hashimoto <sho-h@n...>
Date: Sat, 26 Nov 2011 15:49:08 +0900
Subject: [ruby-reference-manual:2917] [るりまプロジェクト - Bug #5672] Mutex#synchronize の戻り値
Issue #5672 has been updated by Sho Hashimoto. > 返り値がブロックが最後に評価した値になるのであれば object を使うようにしてください。 > > () は本当に何が返ってくるのかわからない場合に使用します。 なるほど。了解です。修正します。 ---------------------------------------- Bug #5672: Mutex#synchronize の戻り値 http://redmine.ruby-lang.org/issues/5672 Author: Sho Hashimoto Status: Closed Priority: Normal Assignee: Sho Hashimoto Category: Target version: reporter: ruby_version: 1.8.7 の Mutex#synchronize の戻り値が間違っているというつぶやきがありました。 http://doc.ruby-lang.org/ja/1.8.7/method/Mutex/i/synchronize.html 実装を確認してみると以下なので、ブロックが最後に評価した値を返すように思います。 def synchronize lock begin yield ensure unlock end end そのため、戻り値は不定として戻り値に関する言及を足しておきます。 --- refm/api/src/thread/Mutex (revision 4906) +++ refm/api/src/thread/Mutex (working copy) @@ -43,10 +43,12 @@ --- locked? -> bool mutex がロックされている時、真を返します。 ---- synchronize { ... } -> self +--- synchronize { ... } -> () mutex をロックし、ブロックを実行します。実行後に必ず mutex のロックを解放します 。 +ブロックが最後に評価した値を返します。 + --- try_lock -> bool mutex をロックしようとして、ロックが成功した場合、真を返します。 ロックできなかった場合にはブロックせず偽を返します。 1.9 系も実装は異なりますが同様です。(thread.c のコメントは正しいようでした) -- http://redmine.ruby-lang.org -- ML: ruby-reference-manual@m... Info: http://QuickML.com/
2915 2011-11-26 03:11 [sho-h@n... ] [るりまプロジェクト - Bug #5672][Assigned] Mutex#synchronize の戻り値 2916 2011-11-26 07:19 ┣[okkez000@g... ] -> 2917 2011-11-26 07:49 ┗[sho-h@n... ] [るりまプロジェクト - Bug #5672] Mutex#synchronize の戻り値