本文简要介绍ruby语言中 Fiber.schedule
的用法。
用法
schedule { |*args| ... } → fiber
该方法是 expected
以立即在单独的非阻塞光纤中运行提供的代码块。
puts "Go to sleep!"
Fiber.set_scheduler(MyScheduler.new)
Fiber.schedule do
puts "Going to sleep"
sleep(1)
puts "I slept well"
end
puts "Wakey-wakey, sleepyhead"
假设 MyScheduler 被正确实现,这个程序将产生:
Go to sleep! Going to sleep Wakey-wakey, sleepyhead ...1 sec pause here... I slept well
…例如:在 Fiber
( sleep(1)
) 内的第一个阻塞操作中,控制权交给了外部代码(主纤程)和 at the end of that execution
,调度程序负责正确恢复所有阻塞的纤程。
请注意,上面说明的行为是expected
方法的行为方式,实际行为取决于当前调度程序对 Fiber::SchedulerInterface#fiber
方法的实现。 Ruby 不强制此方法以任何特定方式运行。
如果未设置调度程序,则该方法引发 RuntimeError (No scheduler is available!)
。
相关用法
- Ruby Fiber.scheduler用法及代码示例
- Ruby Fiber.transfer用法及代码示例
- Ruby Fiber.new用法及代码示例
- Ruby Fiber.backtrace_locations用法及代码示例
- Ruby Fiber.backtrace用法及代码示例
- Ruby Fiber类用法及代码示例
- Ruby FiberError类用法及代码示例
- Ruby File.identical?用法及代码示例
- Ruby FileUtils.mkdir用法及代码示例
- Ruby FileUtils.compare_file用法及代码示例
- Ruby FileUtils.options_of用法及代码示例
- Ruby File.dirname用法及代码示例
- Ruby FileUtils.ln_s用法及代码示例
- Ruby Fiddle.dlwrap用法及代码示例
- Ruby File.directory?用法及代码示例
- Ruby FileUtils.install用法及代码示例
- Ruby File.link用法及代码示例
- Ruby FileUtils.chown_R用法及代码示例
- Ruby File.expand_path用法及代码示例
- Ruby FileUtils.cp_lr用法及代码示例
- Ruby File.lstat用法及代码示例
- Ruby File.umask用法及代码示例
- Ruby FileUtils.rmdir用法及代码示例
- Ruby File.absolute_path?用法及代码示例
- Ruby FileUtils.rm_rf用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Fiber.schedule。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。