小编use*_*183的帖子

为什么nif函数会阻止Erlang VM调度其他进程?

当Erlang VM梁运行一些用C编写的代码时,没有安排用Erlang编写的其他进程.例如:

static ERL_NIF_TERM
        nifsleep(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
        {
            sleep(10);
            return enif_make_atom(env, "ok");
        }
Run Code Online (Sandbox Code Playgroud)

当你在Erlang中调用这个C函数时,其他进程没有正常进行schedulling.我想知道为什么?这是一个功能还是受实现限制(也就是说,这是一个错误)?

上面代码的地址是:https://github.com/davisp/sleepy

erlang beam erlang-nif

3
推荐指数
1
解决办法
821
查看次数

标签 统计

beam ×1

erlang ×1

erlang-nif ×1