Erlang NIFs:线程锁定

时间:2014-11-06 06:33:10

标签: c erlang erlang-nif

NIF实现可以使用常规C / C ++线程锁定原语,还是必须使用NIF API(enif_mutex_lock(..), enif_mutex_create(..),等)。

1 个答案:

答案 0 :(得分:2)

来自nif docs

  

线程和并发

     

NIF是线程安全的,没有任何显式同步,只要它充当纯函数并且只读取提供的参数。只要通过静态变量或enif_priv_data写入共享状态,就需要提供自己的显式同步。这包括在线程之间共享的进程独立环境中的术语。如果将资源对象视为可变,则资源对象也需要同步。

所以没有什么可以禁止你做任何你想做的事。您可以轻松编写自己的互斥锁/ semafors,而不是。你可以用C或C ++或Rust。

来做

也就是说,没有任何东西阻止制动一切。如果你破坏了任何东西,你就会在整个VM中破坏它我会尝试使用标准的Erlang处理方式,特别是在使用线程时。这些是经过验证的方法,我没有找到任何理由用其他任何东西替换它们。