Method: Fiber.blocking
- Defined in:
- cont.c
.blocking {|fiber| ... } ⇒ Object
Forces the fiber to be blocking for the duration of the block. Returns the result of the block.
See the “Non-blocking fibers” section in class docs for details.
2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 |
# File 'cont.c', line 2774 VALUE rb_fiber_blocking(VALUE class) { VALUE fiber_value = rb_fiber_current(); rb_fiber_t *fiber = fiber_ptr(fiber_value); // If we are already blocking, this is essentially a no-op: if (fiber->blocking) { return rb_yield(fiber_value); } else { return rb_ensure(fiber_blocking_yield, fiber_value, fiber_blocking_ensure, fiber_value); } } |