日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ngx_rtmp_shared模块对ngx_chain_t的操作总结

發布時間:2024/2/28 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ngx_rtmp_shared模块对ngx_chain_t的操作总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
void
ngx_rtmp_free_shared_chain(ngx_rtmp_core_srv_conf_t *cscf, ngx_chain_t *in)
{
? ? ngx_chain_t ? ? ? ?*cl;

//如果引用計數不為0,返回
? ? if (ngx_rtmp_ref_put(in)) {
? ? ? ? return;
? ? }

//如果引用計數為0 的,將當前chain放到需要釋放的鏈表當中,下次循環利用
? ? for (cl = in; ; cl = cl->next) {
? ? ? ? if (cl->next == NULL) {
? ? ? ? ? ? cl->next = cscf->free;
? ? ? ? ? ? cscf->free = in;
? ? ? ? ? ? return;
? ? ? ? }
? ? }

}

注意一點的是,?ngx_rtmp_free_shared_chain 只是將in掛載到了cscf->free, 對in鏈表中buf的數據并沒有做任何處理,現在cscf->free?頭結點中可以認為是已經被寫入值的

為了保證下次從free鏈表中分配的內存為空,ngx_rtmp_alloc_shared_buf 使用了ngx_pcalloc 對分配的內存進行了清零操作


ngx_chain_t *
ngx_rtmp_alloc_shared_buf(ngx_rtmp_core_srv_conf_t *cscf)
{
? ? u_char ? ? ? ? ? ? ? ? ? ? *p;
? ? ngx_chain_t ? ? ? ? ? ? ? ?*out;
? ? ngx_buf_t ? ? ? ? ? ? ? ? ?*b;
? ? size_t ? ? ? ? ? ? ? ? ? ? ?size;


? ? if (cscf->free) {
? ? ? ? out = cscf->free;
? ? ? ? cscf->free = out->next;


? ? } else {


? ? ? ? size = cscf->chunk_size + NGX_RTMP_MAX_CHUNK_HEADER;

// 對新分配的內存進行清零
? ? ? ? p = ngx_pcalloc(cscf->pool, NGX_RTMP_REFCOUNT_BYTES
? ? ? ? ? ? ? ? + sizeof(ngx_chain_t)
? ? ? ? ? ? ? ? + sizeof(ngx_buf_t)
? ? ? ? ? ? ? ? + size);
? ? ? ? if (p == NULL) {
? ? ? ? ? ? return NULL;
? ? ? ? }


? ? ? ? p += NGX_RTMP_REFCOUNT_BYTES;
? ? ? ? out = (ngx_chain_t *)p;


? ? ? ? p += sizeof(ngx_chain_t);
? ? ? ? out->buf = (ngx_buf_t *)p;


? ? ? ? p += sizeof(ngx_buf_t);
? ? ? ? out->buf->start = p;
? ? ? ? out->buf->end = p + size;
? ? }


? ? out->next = NULL;
? ? b = out->buf;
? ? b->pos = b->last = b->start + NGX_RTMP_MAX_CHUNK_HEADER;
? ? b->memory = 1;


? ? /* buffer has refcount =1 when created! */

//引用計數設為1
? ? ngx_rtmp_ref_set(out, 1);


? ? return out;
}

總結

以上是生活随笔為你收集整理的ngx_rtmp_shared模块对ngx_chain_t的操作总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。