Erlang NIF使用
Erlang NIF使用
NIF库是Erlang源码里经常出现的东西,它像其他函数一样被调用,对调用方来说没区别,本身为C实现,效率较高,今天在Linux下测试一下NIF的自定义实现过程
在Erlang中,NIF(Native Implemented Function)被用来扩展erlang的某些功能,一般用来实现一些erlang很难实现的,或者一些erlang实现效率不高的功能。
NIF使用C开发,效率和C接近,比纯erlang实现要高。NIF会编译成动态库,直接动态加载到erlang进程空间调用,也是erlang扩展新方法最高效的做法。调用NIF不用上下文的切换开销。
注意:NIF方法实现的函数如果崩溃了会使整个VM崩溃
最简单的NIF库实现
niftest.c
/* niftest.c */
#include <erl_nif.h>static ERL_NIF_TERM hello(ErlNifEnv
Erlang NIF使用相关推荐
- 【erlang】吃螃蟹 rust 开发 erlang nif 的正确方式 rustler
用rust编写erlang的nif方案,以下几个star比较高 Rustler ( https://github.com/hansihe/rustler ) 这个比较火,但是没有关于如何在 Erlan ...
- erlang nif 中文手册
这是翻译erlang官方文档中的 erts-5.9.2的erl_nif部分.翻译完了.水平有限,我就把这个当作是我自己使用了,以后也会继续完善的. erlang nif 中文手册 概括 功能 初始化 ...
- protobuff的erlang nif封装
服务器协议一直以来都使用erlang-protobuff,项目地址:https://github.com/ngerakines/erlang_protobuffs,但觉得效率不行,于是想优化一下,思路 ...
- 使用 Rust 语言开发 Erlang NIF
Rustler 项目还不是很成熟, 基本可用. 有兴趣的可以给作者提 Issue. Rustler 是一个在安全的用 Rust 编写 Erlang NIF 的库. 这里安全的含义是, 它不会导致 BE ...
- erlang nif windows x64 Failed to load NIF library : 'Unspecified error'
erlang nif when run on windows x64, error like this ; {error,{load_failed,"Failed to load NIF l ...
- linux野指针追踪,一个erlang nif野指针的追踪过程
概述 最近半年, 经常出现一些奇怪的bug. CPU非常高, 但etop并没有red特别高的进程. 内存占用非常高, 和etop看到的内存不吻合. coredump. 因为erlang层面无法定位问题 ...
- erlang NIF部分接口实现(四)消息发送
erlang中不能没有消息和异步过程,NIF也必须有此项能力,这个能力是通过enif_send实现的,它可以在NIF中向一个进程发送消息,但由于消息本身需要跨进程传递,消息的生命周期可能很长,而在er ...
- Erlang NIF的使用
Native Implemented Functions(NIF)可以用C来实现程序一些功能的扩展,一般用来实现一些用Erlang无法实现或者实现效率低的功能. C语言编译生成的动态库(*.so)在E ...
- Erlang NIF简析
在Erlang调用C代码时,NIF(Native Implemented Function)是比port driver更简单和有效的实现方式,尤其是编写同步程序中,NIF是非常适合Erlang 的. ...
最新文章
- 如何评估一项技术是否值得长期投入
- May 18:PHP 用到的学习工具
- java表格更新javadb_Java解析excel表格(新)
- JAVA题目 写一个收费站类_Java综合题目
- GitHub 近两万 Star!深度学习 500 问带你入门人工智能!| 技术头条
- P3800 Power收集
- Windows live Writer的安装配置
- 这个是我学习的所有sql语句的写法
- 文本分类-TextCNN
- Teradata SQL tips
- java如何开发安卓软件_Java 程序员如何快速入门 Android 开发?
- 麦本本从u盘启动计算机,麦本本怎么设计u盘启动顺序
- 计算平均指令时间_欧姆龙PLC指令应用案例
- Brain Predicted Age (二)
- isb 汇编_DSB,ISB,DMB指令 | 学步园
- H3C新华三链路聚合介绍
- AMD Radeon GPU Injector tool | 老旧 AMD 显卡驱动工具
- 甜品消消乐知识点总结
- Apache Doris介绍
- Chrome安装离线插件时出现CRX_Header_invalid