GVL が外れる ruby のメソッドはどれですか?
ruby でマルチスレッドプログラミングを行う場合、どの ruby のメソッドが GVL を外すのかを意識することが重要になります。というのも、それがないと、マルチスレッド環境で実装したとしても、処理が平行して実行されないからです。
自分の理解としては、以下の ruby のメソッドたちは、 GVL が外れると理解しています。
Kernel#sleep
IO#read
,IO#write
ふと、マルチスレッド環境で system
系のコマンド実行を実装しようとして、これは GVL 的に大丈夫なのだろうか、と疑問に思いました。
質問
- ruby のメソッドの中で、 GVL が外れるものはどれですか?
- 例えば、(ないとは思いますが)ありとあらゆるシステムコールに対して GVL が外れたりしますか?