如何防止irb或pry自动启动线程

时间:2018-01-05 02:14:25

标签: ruby multithreading irb pry

当我在pry或irb中创建一个新线程时,会立即启动它。

[1] pry(main)> th = Thread.new {puts "hi"}
hi
=> #<Thread:0x00007ff09b8e8c10@(pry):1 dead>
[2] pry(main)> th.join
=> #<Thread:0x00007ff09b8e8c10@(pry):1 dead>

...

irb(main):001:0> th = Thread.new {puts 'hi'}
=> #<Thread:0x00007fe2cc91e860@(irb):1 run>
hi
irb(main):002:0> th.join
=> #<Thread:0x00007fe2cc91e860@(irb):1 dead>

有什么方法可以阻止这种情况吗? 不确定这种行为是如何有用的;我喜欢它的行为就像我在文件中运行它一样。

1 个答案:

答案 0 :(得分:2)

在文件中运行时,它们会自动启动。

您可以通过在块的开头发出一个Stop来立即暂停一个线程。

th = Thread.new { Thread.stop; puts 'hi' }
# not running yet
th.run
# now will print 'hi'
th.join