繁体   English   中英

Erlang NIF:线程锁定

[英]Erlang NIFs: Threads locking

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

来自nif docs

线程和并发

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

因此,没有什么可以阻止您做任何您想做的事情。 您可以轻松编写自己的互斥锁/ semafors,而不必编写。 您可以使用C或C ++或Rust进行操作。

也就是说,没有什么可以阻止一切。 如果您破坏了任何内容,则将其破坏了整个VM。 我会尝试使用标准的Erlang做事方式,尤其是在使用线程进行批处理时。 这些都是经过验证的方法,我还没有找到用其他任何方法替换它们的理由。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM