当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Fiber.schedule用法及代码示例


本文简要介绍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-lang.org大神的英文原创作品 Fiber.schedule。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。