-
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です。