Sha256: b9b2f5c066f03f5f38e09a96ef03c625f7fc0e2db39c15b591b689c7483d419e

Contents?: true

Size: 1.82 KB

Versions: 8

Compression:

Stored size: 1.82 KB

Contents

# Fibers are primitives for implementing light weight cooperative
# concurrency in Ruby. Basically they are a means of creating code blocks
# that can be paused and resumed, much like threads. The main difference
# is that they are never preempted and that the scheduling must be done by
# the programmer and not the VM.
# 
# As opposed to other stackless light weight concurrency models, each
# fiber comes with a stack. This enables the fiber to be paused from
# deeply nested function calls within the fiber block. See the ruby(1)
# manpage to configure the size of the fiber stack(s).
# 
# When a fiber is created it will not run automatically. Rather it must be
# explicitly asked to run using the `Fiber#resume` method. The code
# running inside the fiber can give up control by calling `Fiber.yield` in
# which case it yields control back to caller (the caller of the
# `Fiber#resume` ).
# 
# Upon yielding or termination the [Fiber](Fiber)
# returns the value of the last executed expression
# 
# For instance:
# 
# ```ruby
# fiber = Fiber.new do
#   Fiber.yield 1
#   2
# end
# 
# puts fiber.resume
# puts fiber.resume
# puts fiber.resume
# ```
# 
# *produces*
# 
#     1
#     2
#     FiberError: dead fiber called
# 
# The `Fiber#resume` method accepts an arbitrary number of parameters, if
# it is the first call to `resume` then they will be passed as block
# arguments. Otherwise they will be the return value of the call to
# `Fiber.yield`
# 
# Example:
# 
# ```ruby
# fiber = Fiber.new do |first|
#   second = Fiber.yield first + 2
# end
# 
# puts fiber.resume 10
# puts fiber.resume 14
# puts fiber.resume 18
# ```
# 
# *produces*
# 
#     12
#     14
#     FiberError: dead fiber called
class Fiber < Object
  def self.yield: (*untyped args) -> untyped

  def initialize: () { () -> void } -> Fiber

  def resume: (*untyped args) -> untyped
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
rbs-0.3.1 stdlib/builtin/fiber.rbs
rbs-0.3.0 stdlib/builtin/fiber.rbs
rbs-0.2.0 stdlib/builtin/fiber.rbs
steep-0.16.0 vendor/ruby-signature/stdlib/builtin/fiber.rbs
steep-0.15.0 vendor/ruby-signature/stdlib/builtin/fiber.rbs
steep-0.14.0 vendor/ruby-signature/stdlib/builtin/fiber.rbs
steep-0.13.0 vendor/ruby-signature/stdlib/builtin/fiber.rbs
steep-0.12.0 vendor/ruby-signature/stdlib/builtin/fiber.rbs