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使用相关推荐

  1. 【erlang】吃螃蟹 rust 开发 erlang nif 的正确方式 rustler

    用rust编写erlang的nif方案,以下几个star比较高 Rustler ( https://github.com/hansihe/rustler ) 这个比较火,但是没有关于如何在 Erlan ...

  2. erlang nif 中文手册

    这是翻译erlang官方文档中的 erts-5.9.2的erl_nif部分.翻译完了.水平有限,我就把这个当作是我自己使用了,以后也会继续完善的. erlang nif 中文手册 概括 功能 初始化 ...

  3. protobuff的erlang nif封装

    服务器协议一直以来都使用erlang-protobuff,项目地址:https://github.com/ngerakines/erlang_protobuffs,但觉得效率不行,于是想优化一下,思路 ...

  4. 使用 Rust 语言开发 Erlang NIF

    Rustler 项目还不是很成熟, 基本可用. 有兴趣的可以给作者提 Issue. Rustler 是一个在安全的用 Rust 编写 Erlang NIF 的库. 这里安全的含义是, 它不会导致 BE ...

  5. 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 ...

  6. linux野指针追踪,一个erlang nif野指针的追踪过程

    概述 最近半年, 经常出现一些奇怪的bug. CPU非常高, 但etop并没有red特别高的进程. 内存占用非常高, 和etop看到的内存不吻合. coredump. 因为erlang层面无法定位问题 ...

  7. erlang NIF部分接口实现(四)消息发送

    erlang中不能没有消息和异步过程,NIF也必须有此项能力,这个能力是通过enif_send实现的,它可以在NIF中向一个进程发送消息,但由于消息本身需要跨进程传递,消息的生命周期可能很长,而在er ...

  8. Erlang NIF的使用

    Native Implemented Functions(NIF)可以用C来实现程序一些功能的扩展,一般用来实现一些用Erlang无法实现或者实现效率低的功能. C语言编译生成的动态库(*.so)在E ...

  9. Erlang NIF简析

    在Erlang调用C代码时,NIF(Native Implemented Function)是比port driver更简单和有效的实现方式,尤其是编写同步程序中,NIF是非常适合Erlang 的. ...

最新文章

  1. 如何评估一项技术是否值得长期投入
  2. May 18:PHP 用到的学习工具
  3. java表格更新javadb_Java解析excel表格(新)
  4. JAVA题目 写一个收费站类_Java综合题目
  5. GitHub 近两万 Star!深度学习 500 问带你入门人工智能!| 技术头条
  6. P3800 Power收集
  7. Windows live Writer的安装配置
  8. 这个是我学习的所有sql语句的写法
  9. 文本分类-TextCNN
  10. Teradata SQL tips
  11. java如何开发安卓软件_Java 程序员如何快速入门 Android 开发?
  12. 麦本本从u盘启动计算机,麦本本怎么设计u盘启动顺序
  13. 计算平均指令时间_欧姆龙PLC指令应用案例
  14. Brain Predicted Age (二)
  15. isb 汇编_DSB,ISB,DMB指令 | 学步园
  16. H3C新华三链路聚合介绍
  17. AMD Radeon GPU Injector tool | 老旧 AMD 显卡驱动工具
  18. 甜品消消乐知识点总结
  19. Apache Doris介绍
  20. Chrome安装离线插件时出现CRX_Header_invalid

热门文章

  1. Kubelet 1.25.x源码——PLEG
  2. 问卷调查设计-SurveyJS的使用(定制)
  3. 数组的使用示例(老师的任务)
  4. 利用树莓派(3B+)板载蓝牙(ble)实现与蓝牙热敏打印机的通信
  5. 中国电子价签驱动IC市场现状研究分析与发展前景预测报告
  6. Mac m1 安装安装homebrew
  7. 第一章 计算机基础知识随堂练习,华南理工计算机应用基础-随堂练习
  8. 想要发布软文,软文的发稿标准有哪些?
  9. word排版之公式的自动化排版及引用
  10. 使用bootstrap.css框架无法显示图标问题