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

歡迎光臨散文網(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ó)家法律
寿阳县| 乌苏市| 门源| 邵东县| 济宁市| 丹阳市| 松潘县| 义乌市| 张家港市| 通州市| 五常市| 溧阳市| 仪征市| 二连浩特市| 尖扎县| 庆城县| 保山市| 开远市| 吉首市| 凤阳县| 平乡县| 曲麻莱县| 浪卡子县| 明星| 城口县| 陈巴尔虎旗| 浦城县| 肥西县| 收藏| 永顺县| 东乌珠穆沁旗| 莒南县| 深泽县| 邛崃市| 东宁县| 玉溪市| 安西县| 怀远县| 蒙自县| 克什克腾旗| 定结县|