运维开发网

ruby – 为什么这段代码会两次打印相同的东西?

运维开发网 https://www.qedev.com 2020-07-23 12:59 出处:网络 作者:运维开发网整理
我正在尝试编写一些小的超时代码: t = Thread.new { sleep 3 } # <- The thread that will do stuff. Thread.new { sleep 2; t.kill; p 'hi!' } # <- The thread that will kill it after two seconds. t.join 如果第一个线程在两秒内完成它的工作,它将
我正在尝试编写一些小的超时代码:

t = Thread.new { sleep 3 } # <- The thread that will do stuff.
Thread.new { sleep 2; t.kill; p 'hi!' } # <- The thread that will kill it after two seconds.
t.join

如果第一个线程在两秒内完成它的工作,它将停止,主线程将无事可做.这将导致程序在第二个线程到达t.kill部分之前退出.但是,当我运行此代码时,“嗨!”打印两次.用put替换p会修复它.为什么会这样?

Ruby有一个io缓冲和线程的错误,看起来就像这样.它最近已经修好,所以升级了.

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号