このマニュアルは既にメンテナンスが終了したバージョンの Ruby を対象としています。
最新版のマニュアルへ
-
void * rb_nogvl(void *(*func)(void *), void *data1, rb_unblock_function_t *ubf, void *data2, int flags)
-
-
func を GVL を解放して呼び出します。
rb_thread_call_without_gvl と同じですが、動作を変える flags を追加で受け取ります。
func を呼ぶ前に保留中の割り込みを処理し、func から戻って GVL を再取得したあとで、その間に発生した割り込みを処理します。他のスレッドから Thread#kill などで割り込まれたときは ubf が呼ばれます。
func の中では、メソッド呼び出しや例外の発生など、ほとんどの Ruby の C API は使えません。
- [PARAM]
func:
-
GVL なしで呼び出す関数です。
- [PARAM]
data1:
-
func にそのまま渡されます。
- [PARAM]
ubf:
-
func を中断させるための関数です。
- [PARAM]
data2:
-
ubf にそのまま渡されます。
- [PARAM]
flags:
-
RB_NOGVL_INTR_FAIL などのフラグの論理和です。
- [RETURN]
-
func の返り値です。ubf によって func が中断されたときは 0 です。