NIF实现可以使用常规C / C ++线程锁定原语,还是必须使用NIF API(enif_mutex_lock(..), enif_mutex_create(..),
等)。
答案 0 :(得分:2)
来自nif docs
线程和并发
NIF是线程安全的,没有任何显式同步,只要它充当纯函数并且只读取提供的参数。只要通过静态变量或enif_priv_data写入共享状态,就需要提供自己的显式同步。这包括在线程之间共享的进程独立环境中的术语。如果将资源对象视为可变,则资源对象也需要同步。
所以没有什么可以禁止你做任何你想做的事。您可以轻松编写自己的互斥锁/ semafors,而不是。你可以用C或C ++或Rust。
来做也就是说,没有任何东西阻止制动一切。如果你破坏了任何东西,你就会在整个VM中破坏它我会尝试使用标准的Erlang处理方式,特别是在使用线程时。这些是经过验证的方法,我没有找到任何理由用其他任何东西替换它们。