HEX
Server: Apache
System: Windows NT MAGNETO-ARM 10.0 build 22000 (Windows 10) AMD64
User: Michel (0)
PHP: 7.4.7
Disabled: NONE
Upload Files
File: C:/Ruby27-x64/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::BlankLineo;	;[	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"../ruby-2.7.7/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[i0o;;[;
0;0[I"cont.c;T@UcRDoc::TopLevel