Ruby 线程控制与调试工具详解
1. 线程执行权传递
在多线程编程中,有时需要特定线程将执行权让给其他正在运行的线程。例如,在多个线程进行图形操作或显示统计信息时,确保每个线程都有机会执行是很重要的。
1.1 Thread.pass 方法
理论上, Thread.pass 方法可以实现线程执行权的传递。Ruby 文档中给出了如下示例:
# pass0.rb
a = Thread.new { print "a"; Thread.pass;
print "b"; Thread.pass;
print "c" }
b = Thread.new { print "x"; Thread.pass;
print "y"; Thread.pass;
print "z" }
a.join
b.join
根据文档,运行此代码会输出 axbycz ,实际运行结果也确实如此。这似乎表明,每次调用 print 后调用 Thread.pass ,线程会将执行权传递给其他线程,从而使两个线程的输出交替出现。
为了验证 Thread.pass 的实际作用,我们移除了 Thread.pass 调用:
超级会员免费看
订阅专栏 解锁全文
1280

被折叠的 条评论
为什么被折叠?



