MMCT TEAM
Server IP : 111.118.215.189  /  Your IP : 216.73.216.153
Web Server : Apache
System : Linux md-in-83.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : a1673wkz ( 2475)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /proc/thread-self/root/opt/cpanel/ea-ruby24/root/usr/share/ri/system/Fiber/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //proc/thread-self/root/opt/cpanel/ea-ruby24/root/usr/share/ri/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"Lbe explicitly asked to run using the <code>Fiber#resume</code> method. ;TI"FThe code running inside the fiber can give up control by calling ;TI"M<code>Fiber.yield</code> in which case it yields control back to caller ;TI"3(the caller of the <code>Fiber#resume</code>).;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"IThe <code>Fiber#resume</code> method accepts an arbitrary number of ;TI"Jparameters, if it is the first call to <code>resume</code> then they ;TI"Jwill be passed as block arguments. Otherwise they will be the return ;TI"2value of the call to <code>Fiber.yield</code>;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 14
;TI"puts fiber.resume 18
;T;0o;	;[I"<em>produces</em>;T@o;;[I"12
;TI"14
;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"resume;T@a[I"
transfer;T@a[;[[;[[[U:RDoc::Context::Section[i0o;;[;
0;0[@U@UcRDoc::TopLevel

MMCT - 2023