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

How to prevent irb or pry from starting thread automatically

当我在 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>

有什么办法可以避免这种情况吗? 不确定这种行为有何用处;我希望它的行为就像我 运行 它在文件中一样。

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

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

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