Ruby 无等待互斥同步
Ruby Mutex Synchronize without wait
http://ruby-doc.org/core-1.9.3/Mutex.html
有没有办法让 Mutex.Synchronize 立即 return 而不是等待获得锁,如果它当时被另一个线程持有?
换句话说,与 try_lock 相同的行为。
synchronize
仅仅
Obtains a lock, runs the block, and releases the lock when the block completes.
这是 Rubinius 的 implementation
class Mutex
def synchronize
lock
begin
yield
ensure
unlock
end
end
end
你可以很容易地采用这个来编写你自己的try_synchronize
:
class Mutex
def try_synchronize
return unless try_lock
begin
yield
ensure
unlock
end
end
end
如果没有给出块,MRI 会抛出异常,因此您可能需要添加一个:
raise ThreadError, 'must be called with a block' unless block_given?
http://ruby-doc.org/core-1.9.3/Mutex.html
有没有办法让 Mutex.Synchronize 立即 return 而不是等待获得锁,如果它当时被另一个线程持有?
换句话说,与 try_lock 相同的行为。
synchronize
仅仅
Obtains a lock, runs the block, and releases the lock when the block completes.
这是 Rubinius 的 implementation
class Mutex
def synchronize
lock
begin
yield
ensure
unlock
end
end
end
你可以很容易地采用这个来编写你自己的try_synchronize
:
class Mutex
def try_synchronize
return unless try_lock
begin
yield
ensure
unlock
end
end
end
如果没有给出块,MRI 会抛出异常,因此您可能需要添加一个:
raise ThreadError, 'must be called with a block' unless block_given?