How absurd is this?

Imagine you have in a method a block. Sometimes you will want that
block
to be executed via a mutex.synchronize() call. And sometimes you don’t
want to synchronize.

def y
yield
end

def method_with_a_block
(dont_lock_here ? method(:y) : @mutex.method(:synchronize)).call do
puts “This block may or may not be synchronized, depending on
whether
dont_lock_here() returned true or false.”
end
end

Is that a stupid way to get that effect?

The only other alternative that occurs to me is to make the block a
separate method.

def i_was_a_block
puts “This code may or may not be syncronized, depending on whether
dont_lock_here() in method_with_a_block returned true or false.”
end

def method_with_a_block
if dont_lock_here
i_was_a_block
else
@mutex.synchronize {i_was_a_block}
end
end

What do you all think?

Kirk H.

On 8/12/06, [email protected] [email protected] wrote:

Imagine you have in a method a block. Sometimes you will want that block
to be executed via a mutex.synchronize() call. And sometimes you don’t
want to synchronize.

I’d add a Mutex#synchronize_unless

def method_with_a_block
@mutex.synchronize_unless(dont_lock_here()) do
puts “This block may or may not be synchronized, depending on
whether
dont_lock_here() returned true or false.”
end
end

martin

Martin DeMello wrote:

def method_with_a_block
@mutex.synchronize_unless(dont_lock_here()) do
puts “This block may or may not be synchronized, depending on
whether
dont_lock_here() returned true or false.”
end
end

martin

+1

On Sat, 12 Aug 2006, Martin DeMello wrote:

dont_lock_here() returned true or false."
end
end

That’s perfect. And obvious. :slight_smile: Thanks much for helping me see it.

Kirk H.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs