Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
proc
/
self
/
root
/
proc
/
thread-self
/
root
/
opt
/
ruby-2.7
/
usr
/
share
/
ri
/
2.7.0
/
system
/
Fiber
/
//proc/self/root/proc/thread-self/root/opt/ruby-2.7/usr/share/ri/2.7.0/system/Fiber/cdesc-Fiber.ri
U:RDoc::NormalClass[iI" Fiber:ET@I"Object;To:RDoc::Markup::Document:@parts[o;;[o:RDoc::Markup::Paragraph;[ I"EFibers are primitives for implementing light weight cooperative ;TI"Mconcurrency in Ruby. Basically they are a means of creating code blocks ;TI"Lthat can be paused and resumed, much like threads. The main difference ;TI"Nis that they are never preempted and that the scheduling must be done by ;TI"#the programmer and not the VM.;To:RDoc::Markup::BlankLine o; ;[ I"OAs opposed to other stackless light weight concurrency models, each fiber ;TI"Jcomes with a stack. This enables the fiber to be paused from deeply ;TI"Dnested function calls within the fiber block. See the ruby(1) ;TI"9manpage to configure the size of the fiber stack(s).;T@o; ;[ I"KWhen a fiber is created it will not run automatically. Rather it must ;TI"?be explicitly asked to run using the Fiber#resume method. ;TI"FThe code running inside the fiber can give up control by calling ;TI"EFiber.yield in which case it yields control back to caller (the ;TI"!caller of the Fiber#resume).;T@o; ;[I"JUpon yielding or termination the Fiber returns the value of the last ;TI"executed expression;T@o; ;[I"For instance:;T@o:RDoc::Markup::Verbatim;[ I"fiber = Fiber.new do ;TI" Fiber.yield 1 ;TI" 2 ;TI" end ;TI" ;TI"puts fiber.resume ;TI"puts fiber.resume ;TI"puts fiber.resume ;T:@format0o; ;[I"<em>produces</em>;T@o;;[I"1 ;TI"2 ;TI"#FiberError: dead fiber called ;T;0o; ;[ I"HThe Fiber#resume method accepts an arbitrary number of parameters, ;TI"Dif it is the first call to #resume then they will be passed as ;TI"Eblock arguments. Otherwise they will be the return value of the ;TI"call to Fiber.yield;T@o; ;[I" Example:;T@o;;[I""fiber = Fiber.new do |first| ;TI"& second = Fiber.yield first + 2 ;TI" end ;TI" ;TI"puts fiber.resume 10 ;TI"!puts fiber.resume 1_000_000 ;TI"Kputs fiber.resume "The fiber will be dead before I can cause trouble" ;T;0o; ;[I"<em>produces</em>;T@o;;[I"12 ;TI" 1000000 ;TI""FiberError: dead fiber called;T;0: @fileI"cont.c;T:0@omit_headings_from_table_of_contents_below0; 0;0[ [ [ [[I" class;T[[:public[[I"current;TI"../cont.c;T[I" yield;T@a[:protected[ [:private[ [I" instance;T[[;[[I"alive?;T@a[I"inspect;T@a[I" raise;T@a[I"resume;T@a[I" to_s;T@a[I" transfer;T@a[;[ [;[ [ [U:RDoc::Context::Section[i 0o;;[ ; 0;0[I"cont.c;T@UcRDoc::TopLevel