pluskid
#1
Hi! I found some articles introduce the Fiber in Ruby 1.9. And also
Fiber::Core as the coroutine support in Ruby. Here’s an example:
require ‘fiber’
f = g = nil
f = Fiber::Core.new { |x|
puts “F1: #{x}”
x = g.transfer(x+1)
puts “F2: #{x}”
x = g.transfer(x+1)
puts “F3: #{x}”
}
g = Fiber::Core.new { |x|
puts “G1: #{x}”
x = f.transfer(x+1)
puts “G2: #{x}”
x = f.transfer(x+1)
}
f.transfer(100)
But when I run this example, I got an error:
NameError: uninitialized constant Fiber::Core
I’m using Ruby1.9 package of Debian lenny: Version: 1.9.0.0-2
Is the api changed? Or has Fiber::Core been removed? Thanks!
pluskid
#2
“p” == pluskid [email protected] writes:
p> f = Fiber::Core.new { |x|
gsub(/::Core/, ‘’)
vgs% cat b.rb
require ‘fiber’
f = g = nil
f = Fiber.new { |x|
puts “F1: #{x}”
x = g.transfer(x+1)
puts “F2: #{x}”
x = g.transfer(x+1)
puts “F3: #{x}”
}
g = Fiber.new { |x|
puts “G1: #{x}”
x = f.transfer(x+1)
puts “G2: #{x}”
x = f.transfer(x+1)
}
f.transfer(100)
vgs%
vgs% ./ruby -v b.rb
ruby 1.9.0 (2008-02-18 revision 15525) [i686-linux]
F1: 100
G1: 101
F2: 102
G2: 103
F3: 104
vgs%
Guy Decoux
pluskid
#3
Oh! Thanks! So, in the Ruby 1.9 Release. Fiber and Fiber::Core are
merged.
2008/2/19, ts removed_e[email protected]: