Bug #554

Sync_m#sync_try_lockの引数が無視されている

Added by akira yamada almost 7 years ago. Updated about 4 years ago.

[ruby-dev:36233]
Status:Closed
Priority:Normal
Assignee:-
ruby -v: Backport:

Description

=begin
こうだったりしないでしょうか?:

--- lib/sync.rb (revision 19272)
+++ lib/sync.rb (working copy)
@@ -126,9 +126,9 @@

# locking methods.
def sync_try_lock(mode = EX)
  • return unlock if sync_mode == UN
  • return unlock if mode == UN @sync_mutex.synchronize do
  • ret = sync_try_lock_sub(sync_mode)
  • ret = sync_try_lock_sub(mode) end ret end

ruby_1_8でも同じです。
=end

History

#1 Updated by akira yamada almost 7 years ago

=begin
http://rubyforge.org/tracker/index.php?func=detail&aid=11680&group_id=426&atid=1700
でした。

akira yamada さんは書きました:

ruby_1_8でも同じです。

--- lib/sync.rb (revision 19264)
+++ lib/sync.rb (working copy)
@@ -54,6 +54,7 @@
# exceptions
class Err < StandardError
def Err.Fail(*opt)
+ Thread.critical = false
fail self, sprintf(self::Message, *opt)
end

@@ -129,10 +130,10 @@

# locking methods.
def sync_try_lock(mode = EX)
  • return unlock if sync_mode == UN
  • return unlock if mode == UN

    Thread.critical = true

  • ret = sync_try_lock_sub(sync_mode)

  • ret = sync_try_lock_sub(mode)
    Thread.critical = false
    ret
    end

--
ay

=end

#2 Updated by Keiju Ishitsuka almost 7 years ago

=begin
けいじゅ@いしつかです.

In [ruby-dev :36234 ] the message: " Re: [Bug #554]
Sync_m#sync_try_lockの引数が無視されている ", on Sep/09 22:38(JST)
akira yamada / やまだあきら writes:

http://rubyforge.org/tracker/index.php?func=detail&aid=11680&group_id=426&atid=1700

でした。

akira yamada さんは書きました:

ruby_1_8でも同じです。

(中略)

その通りです.
チェックインの方お願いしてしまってよろしいでしょうか?

__
---------------------------------------------------->> 石塚 圭樹 <<---
---------------------------------->> e-mail: keiju@ishitsuka.com <<---

=end

#3 Updated by akira yamada almost 7 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r19280.
=end

#4 Updated by akira yamada almost 7 years ago

=begin
石塚圭樹 さんは書きました:

http://rubyforge.org/tracker/index.php?func=detail&aid=11680&group_id=426&atid=1700
その通りです.
チェックインの方お願いしてしまってよろしいでしょうか?

trunkにcommitしました。

ruby_1_8のほうはよく見るとFailを呼ぶ前に
Thread.critical=false
としているところがあるのですが、
Failの中ですべて
Thread.critical=false
にしてしまってもよいでしょうか。

もしそうだとすると、こうですかね?:

--- lib/sync.rb (リビジョン 19264)
+++ lib/sync.rb (作業コピー)
@@ -54,6 +54,7 @@
# exceptions
class Err < StandardError
def Err.Fail(*opt)
+ Thread.critical = false
fail self, sprintf(self::Message, *opt)
end

@@ -129,10 +130,10 @@

# locking methods.
def sync_try_lock(mode = EX)
  • return unlock if sync_mode == UN
  • return unlock if mode == UN

    Thread.critical = true

  • ret = sync_try_lock_sub(sync_mode)

  • ret = sync_try_lock_sub(mode)
    Thread.critical = false
    ret
    end
    @@ -156,7 +157,6 @@
    def sync_unlock(m = EX)
    Thread.critical = true
    if sync_mode == UN

  •  Thread.critical = false
    Err::UnknownLocker.Fail(Thread.current)
    

    end

@@ -165,7 +165,6 @@
runnable = false
case m
when UN
- Thread.critical = false
Err::UnknownLocker.Fail(Thread.current)

  when EX

@@ -291,7 +290,6 @@
ret = false
end
else
- Thread.critical = false
Err::LockModeFailer.Fail mode
end
return ret

--
やまだ

=end

Also available in: Atom PDF