Project

General

Profile

Bug #17801

Updated by ioquatix (Samuel Williams) about 3 years ago

Ruby version: 
 ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-linux] 

 used Scheduler:  
 https://github.com/ruby/ruby/blob/master/test/fiber/scheduler.rb 

 Example Code which should work: 

 ``` 
 require `require 'pty' 
 require "./scheduler.rb" 

 line_event = TracePoint.new(:line) do |t| 
   p [t.lineno, t.method_id, t.path] 
 end 

 Fiber.set_scheduler(Scheduler.new) 

 master, slave = PTY.open 
 read, write = IO.pipe 
 pid = spawn("bash", :in=>read, :out=>slave) 
 read.close       # we dont need the read 
 slave.close      # or the slave 

 line_event.enable do 

 Fiber.schedule do 
   loop do 
     puts "date" 
     write.puts "date" 
     sleep 1 
   end 
 end 

 Fiber.schedule do 
   loop do 
     puts master.gets.chomp 
     puts master.gets.chomp # this line blocks all fibers, why ? 
     puts "test" 
     sleep 1 
   end 
 end 

 #write.close  
 end end` 
 ``` 

Back