Project

General

Profile

Actions

Bug #6699

closed

rb_barrier_wait() gets blocked when running within a Thread.new { }

Added by ibc (Iñaki Baz Castillo) almost 10 years ago. Updated almost 10 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
ruby -v:
ruby 2.0.0dev (2012-07-03 trunk 36272) [x86_64-linux]
Backport:
[ruby-core:46176]

Description

In my Ruby C extension I use rb_barrier_wait(MY_BARRIER) in a method. It works perfectly but I've realized of a case in which it gets
blocked:

Thread.new do
MyExten.my_method
end

In this case the C function rb_barrier_wait(MY_BARRIER) gets blocked (note that I don't call if from other place). So this seems a conflict
of the new Thread and rb_barrier_wait(), it seems that they both try to access to the same shared resource. Is it the expected behavior?

Updated by kosaki (Motohiro KOSAKI) almost 10 years ago

Please don't use rb_barrier_wait(). It doesn't have barrier semantics. Moreover, It is not a public API. We might remove it in future release.

Updated by ibc (Iñaki Baz Castillo) almost 10 years ago

Thanks for the clarification.

Updated by kosaki (Motohiro KOSAKI) almost 10 years ago

  • Status changed from Open to Closed
Actions

Also available in: Atom PDF