caller
从中断中调用内容的规则是什么?当我运行以下代码时:
File: test
1| def a; b end
2| def b; c end
3| def c; loop{sleep(1)} end
4| def d; e end
5| def e; f end
6| def f; puts caller; exit end
7| Signal.trap("INT"){d}
8| a
并Ctrl+c
在执行期间键入,我得到以下输出:
test:5:in `e'
test:4:in `d'
test:7:in `block in <main>'
test:3:in `call'
test:3:in `sleep'
test:3:in `block in c'
test:3:in `loop'
test:3:in `c'
test:2:in `b'
test:1:in `a'
test:8:in `<main>'
构成此调用堆栈的规则是什么?我看到两个<main>
. 它们以某种方式结合在一起。我不完全确定如何。另外,当有多个线程运行时会发生什么?如何确定在从中断调用的调用堆栈中合并或忽略哪些线程?