Когда луч Erlang VM запускает некоторый код, написанный на C, другие процессы, написанные в Erlang, не были запланированы. Например:Почему функция nif блокирует работу Erlang VM от планирования других процессов?
static ERL_NIF_TERM
nifsleep(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
{
sleep(10);
return enif_make_atom(env, "ok");
}
при вызове этой функции C в Erlang, другие процессы не schedulling нормально. Я хочу знать почему? Является ли это функцией или ограничено реализацией (т. Е. Это ошибка)?
Адрес кода выше в: https://github.com/davisp/sleepy