`
liumengfan
  • 浏览: 32828 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

iolist类型

阅读更多
今天读到http://blog.yufeng.info的gen_tcp:send的深度解刨和使用指南(初稿),看到下面这句:
引用

gent_tcp:send的时候数据的格式是iolist. 很多人会误会,特地把iolist特地变成list或者binary. 新生成的binary或者list在send之后要GC回收, 如果频繁的话,
系统的性能损失很大.
tcp驱动是支持scatter write的, 最终是调用writev系统调用的.所以我们要充分利用这一特性.
我们从上面的代码可以看出, io是按照这样的规则填充writev向量的: 如果iolist的元素是
1. int, 拷贝.
2. binary是heap binary, 拷贝
3. binary是proc binary而且大小<64字节拷贝.

同时tcp是流协议,我们在发送消息的时候, 通常需要在消息前面添加个头, 比如说4个字节的长度. 这个如果手工做的话, 效率非常低.

时,对iolist数据类型,不是很明白,然后自己在http://www.cnblogs.com/me-sa/archive/2012/01/31/erlang0034.htmllist和iolist有什么区别找到了答案:
引用

1. []
2. binary
3. 列表, 每个元素是int(0-255)或者binary或者iolist.
其中binary是指 bitsize % 8 == 0 .
int 是0-255
分享到:
评论

相关推荐

    axiom:Web应用程序的微型框架

    公理 Axiom是一个微框架,用于在Erlang中构建Web应用程序。 它的灵感来自 ,建在之上。 入门 构建Axiom的目的是使创建Web应用程序变得快速而轻松。 一个最小的应用程序将如下所示... 返回值可以是二进制字符串或iolist

    jiffy:适用于Erlang的JSON NIF

    唯一可能使您措手不及的是,即使jiffy:encode/1的返回类型在大多数情况下都返回二进制,它也是一个iolist。 关于unicode的快速说明。 Jiffy仅了解二进制格式的UTF-8。 故事结局。 错误作为错误异常引发。 Eshell V...

    nodejs结合socket.io实现websocket通信功能的方法

    var sockex = iolist.indexOf(socket); // 定义 ondisconnect 事件行为 socket.on('disconnect', function() { // 将断开连接的 socket 从广播列表里删除 iolist.splice(sockex, 1); }); }); // 数据广播...

    nodejs.socketio很好的入门例子javascript脚本方式

    1.运行时候找不到 express 等,进入工程目录,npm install express,package.json就会加入库;...var iolist = []; //定义socket on connection( 连入) 事件行为 io.on('connection', function (socket) { .....

    useragent:通过Erlang中的用户代理字符串识别浏览器和操作系统

    函数useragent:parse/1可以接受iolist或二进制UserAgent,并将返回所需的详细信息: 1&gt; useragent:parse("Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 6.8) PPC; 240x320; HTC_TyTN/1.0 Profile/...

    bunyan_core:Elixir的分布式记录器

    使用iolist构造消息 人性化的多行消息格式(包括error_logger和SASL) 支持按源和按作者配置,并能够登录到多个文件和设备 与logrotate一起使用(将其发送给SIGHUP ,它将关闭并重新打开日志文件)。 概括 摘要摘要...

    浅谈ABB盐用机器人的故障分析及排除.pdf

    示教器会显示故障列表(IOlist),帮助操作人员识别和解决问题。 7. 故障排除的具体案例: 文中提到的故障案例包括夹爪或抓手状态故障、袋子流到位信号故障、机器人退盘请求信号故障等。每一种故障都会在示教器上...

Global site tag (gtag.js) - Google Analytics