最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Event in Action(3.1) Buffer event

2023-06-10 23:35 作者:米諾斯人  | 我要投稿

buffer event 專門用于處理io事件,如socket的io。

對(duì)普通event進(jìn)行封裝,當(dāng)epoll返回可寫可讀event的時(shí)候,觸發(fā)框架自帶的回調(diào)函數(shù)進(jìn)行讀寫。自動(dòng)處理類似EWOULDBLOCK的非阻塞讀寫時(shí),可恢復(fù)的errno,以及不可回復(fù)的errno。


回調(diào)函數(shù)中的事件參數(shù) short events:

  • BEV_EVENT_READING

    An event occured during a read operation on the bufferevent. See the other flags for which event it was.

  • BEV_EVENT_WRITING

    An event occured during a write operation on the bufferevent. See the other flags for which event it was.

  • BEV_EVENT_ERROR

    讀寫操作的時(shí)候發(fā)生錯(cuò)誤。

  • BEV_EVENT_TIMEOUT

    超時(shí)。

  • BEV_EVENT_EOF

    對(duì)方關(guān)閉連接。

  • BEV_EVENT_CONNECTED

    本地主動(dòng)關(guān)閉連接。

水位:見下一篇。


這里只說一下參數(shù)三:

  • BEV_OPT_CLOSE_ON_FREE

    free buffer內(nèi)存的時(shí)候自動(dòng)關(guān)閉socket

  • BEV_OPT_THREADSAFE

    多線程安全。

  • BEV_OPT_DEFER_CALLBACKS

    延遲調(diào)用callback,防止爆棧(比如callback1寫入buffer導(dǎo)致buffer滿了,callback2這時(shí)候觸發(fā)(full條件),之間drain空buffer,empty條件又觸發(fā)callback1,如此循環(huán)往復(fù))

  • BEV_OPT_UNLOCK_CALLBACKS

    buffer觸發(fā)事件,調(diào)用callback的時(shí)候,先release mutex

如果要自動(dòng)產(chǎn)生connect的socket:

address為對(duì)端地址。

一些http的東西就不談了,還沒學(xué)

設(shè)定三種callback。

值得一提的是eventcb,在鏈接發(fā)生讀寫之外的事件,或者讀寫觸發(fā)水位線的時(shí)候會(huì)觸發(fā)。

可以通過null來禁用callback。

設(shè)置event以及timeout。

對(duì)普通struct event的封裝

一般不需要禁用讀事件,在input buffer滿了的時(shí)候,框架自動(dòng)停止read,直到buffer又有了新的空間。

水位設(shè)定。

buffer讀寫相關(guān)。不重要的,簡(jiǎn)單看看就會(huì)。復(fù)雜度也很明顯沒什么可討論的。

強(qiáng)迫buffer event預(yù)留足夠的空間。

socket buffer沒有這個(gè)配置。

優(yōu)先級(jí)以及上鎖。如果初始化的時(shí)候沒有設(shè)定BEV_OPT_THREADSAFE,則上鎖沒有任何效果。


Event in Action(3.1) Buffer event的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
平罗县| 图片| 沅陵县| 五峰| 洛扎县| 石台县| 东乡族自治县| 文水县| 夏邑县| 焦作市| 柳江县| 江安县| 邓州市| 响水县| 绥滨县| 贡山| 揭西县| 嘉祥县| 金山区| 屏东市| 德江县| 龙岩市| 涞水县| 和顺县| 辽阳县| 五原县| 安图县| 施秉县| 玛曲县| 收藏| 长阳| 三江| 海晏县| 保康县| 永春县| 博兴县| 罗定市| 中超| 休宁县| 资中县| 雷州市|