在Erlang中进程_标志(优先级、级别)的正确用法是什么?

在Erlang中进程_标志(优先级、级别)的正确用法是什么?,erlang,scheduling,Erlang,Scheduling,我想使用process_flagpriority,Level设置进程的优先级。我对它应该在代码中的位置有点困惑,似乎找不到一个例子 我可以看到的两个选项是: 1在生成进程之前设置标志: process_flag(priority, max), register(myprocess, spawn(fun() -> myprocess() end)), 2生成函数后,在函数内设置标志: myprocess() -> process_flag(priority, max), %do st

我想使用process_flagpriority,Level设置进程的优先级。我对它应该在代码中的位置有点困惑,似乎找不到一个例子

我可以看到的两个选项是:

1在生成进程之前设置标志:

process_flag(priority, max),
register(myprocess, spawn(fun() -> myprocess() end)),
2生成函数后,在函数内设置标志:

myprocess() ->
process_flag(priority, max),
%do stuff

此外,如果选项1正确,在生成其他进程之前是否需要将标志重置为正常?

选项2正确。如前所述,process_flag/2为调用此函数的进程设置某些标志。我认为任何进程标志都不会继承到派生的进程

文档还建议不要使用最高优先级:

最大优先级保留供Erlang运行时系统内部使用,其他人不应使用


选项2是正确的。如前所述,process_flag/2为调用此函数的进程设置某些标志。我认为任何进程标志都不会继承到派生的进程

文档还建议不要使用最高优先级:

最大优先级保留供Erlang运行时系统内部使用,其他人不应使用

您并不真正希望使用流程优先级。正如@legocia指出的,不要使用max,它会有效地阻止调度程序。您并不真正想要使用进程优先级。正如@legocia指出的,不要使用max,它会有效地阻止调度程序。