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>'
このコール スタックを構成するルールは何ですか? の 2 つのインスタンスが表示されます<main>
。それらは何らかの形で組み合わされています。正確な方法はわかりません。また、複数のスレッドが実行されている場合はどうなりますか? 割り込みから呼び出されたコール スタックで結合または無視されるスレッドはどのように決定されますか?