您当前的位置: 首页 > 

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

零拷贝系统的制作

qianbo_insist 发布时间:2021-02-19 00:19:11 ,浏览量:0

1、减少memset 和memcpy的使用

经常看到程序员使用memset和memcpy,一层一层的拷贝耗cpu是比较多的,需要争取零拷贝字节 memset一块内存需要看是否必要,在写rtp程序的时候,看见过有程序眼memset一块内存,也就是mtu大小的缓存,mtu一般在1000到1500之内,每发一次包,就memset一次,完全每必要,因为你每次拷贝进去,那就很费,拷贝过程已经把缓存清掉了,没有必要事先memset 一次

制作服务器的过程中,零拷贝系统的写法其实比较简单,就是预留空间,在写flv和rtmpserver的过程中,把预先留的字节留好,就不用拷贝了,rtmpserver 需要预留的空间最大为18字节,熟悉协议的人都知道,而websocket server 需要预留的空间为最大10字节,那么预先留好18+10 字节的空间就已经足够了。

/*
 sock      : need send socket
 header    : flv header and ***reserve 10 bytes*** for websocket header
 headerlen : header len
 data      : flv av data
 datalen   : flv av data len
*/
bool c_flvserver::func_set_head_send            
关注
打赏
1663161521
查看更多评论
0.0351s