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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

epoll 边沿触发(ET 模式)和水平触发(LT 模式)

發布時間:2024/9/30 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 epoll 边沿触发(ET 模式)和水平触发(LT 模式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1)應用 ET 模式的目的:改變 epoll_wait 的默認屬性,可以減少調用 epoll_wait 函數的調用次數。
(2)思想由來:模擬電路的高低電頻的思想。

水平觸發: 持續的 1 持續的 0
邊沿觸發: 0 ->1 ;1 -> 0
(3)場景:
用 epoll 實現一個服務器,調用 epoll_wait 函數進行監聽,此時 client 給 epoll 發送了 100 字節的數據,而 server 使用 read 函數讀走 50 字節,剩余 50 字節,問題:epoll_wait 函數還觸發么?
對于水平觸發來說應該觸發: 因為緩存區內還有數據沒讀完,你需要一直告知我。
2對于邊沿觸發來說不應該觸發:因為 epoll_wait 的職責是告知 server 是否有讀事件發生,我已經告知一次了,但是你有沒有讀完,你的事,我不管 。
(4)使用:默認是水平觸發,若設置邊沿觸發,需要對監聽事件的基礎上加宏 EPOLLET。
(5)邊沿觸發實例:

#include <stdio.h> #include <stdlib.h> #include <sys/epoll.h> #include <errno.h> #include <unistd.h> #define MAXLINE 10 int main(int argc, char *argv[]) {int efd, i; // efd -- epoll樹根,i -- 循環因子char buf[MAXLINE], ch = 'a';int pfd[2]; pipe(pfd); // 創建管道 pfd[0]--讀 pfd[1]--寫pid_t pid = fork();if (pid == 0) // 子進程 寫操作(模擬一個客戶端的操作) { close(pfd[0]); // 關閉讀端while (1) { for (i = 0; i < MAXLINE/2; i++)buf[i] = ch; // buf -- aaaaabuf[i-1] = '\n'; // buf -- aaaa\nch++; // 'a'--'b'for (; i < MAXLINE; i++) // 從 buf[5]開始buf[i] = ch; //buf -- aaaa\nbbbbbbuf[i-1] = '\n'; //buf -- aaaa\nbbbb\nch++; // 'b'--'cwrite(pfd[1], buf, sizeof(buf)); // 將buf寫入 管道 --- aaaa\nbbbb\nsleep(5);} // 周期的向管道內寫,再寫就是 cccc\ndddd\nclose(pfd[1]); } else if (pid > 0) // 父進程讀操作 (模擬一個服務器的操作) { struct epoll_event event;struct epoll_event resevent[10]; // epoll_wait就緒返回eventint res, len;close(pfd[1]); // 關閉寫端efd = epoll_create(10); // 創建epoll紅黑樹根event.events = EPOLLIN | EPOLLET; // ET 邊沿觸發 -- epoll_wait只告知server一次// 注意:event.events = EPOLLIN; // LT 水平觸發 (默認)event.data.fd = pfd[0];epoll_ctl(efd, EPOLL_CTL_ADD, pfd[0], &event); // 上樹while (1) {res = epoll_wait(efd, resevent, 10, -1); // 監測讀端if (resevent[0].data.fd == pfd[0]) { // 如果管道里有數據需要讀len = read(pfd[0], buf, MAXLINE/2); // 邊沿:只讀取一半 // 如果是水平觸發,則全讀 write(STDOUT_FILENO, buf, len);} }close(pfd[0]); // 父進程讀結束,關閉讀端close(efd); // 關閉樹根 } else {perror("fork");exit(-1);}return 0; }

結果:
水平觸發結果:

父進程 epoll_wait 阻塞(epollt 認為沒數據才是讀事件結束,沒有次數限制)。

父進程 epoll_wait 阻塞。
邊沿觸發結果:

父進程 epoll_wait 阻塞(epollt 認為每讀一次就是讀事件結束)。

父進程 epoll_wait 阻塞。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的epoll 边沿触发(ET 模式)和水平触发(LT 模式)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产亚洲精品自拍 | 18禁男女爽爽爽午夜网站免费 | 精品一区二区日韩 | 牛牛精品一区二区 | 星空大象mv高清在线观看免费 | 日韩av女优在线观看 | 午夜视频在线免费观看 | av无码精品一区二区三区 | 成人激情自拍 | 婷婷综合在线视频 | 欧美日韩在线视频一区 | 婷婷综合在线观看 | 丰满的女邻居 | 综合激情久久 | 熟女熟妇伦久久影院毛片一区二区 | 国产精品无码自拍 | www.xxx亚洲| 国产福利资源 | 欧美97| 91超薄肉色丝袜交足高跟凉鞋 | 中文字幕一区二 | 西西人体做爰大胆gogo | 播播开心激情网 | 国产成人午夜高潮毛片 | 一区二区免费在线播放 | 免费在线观看黄色av | 99国内揄拍国内精品人妻免费 | 狂野少女电影在线观看国语版免费 | 天天操天天干天天干 | 色呦呦免费观看 | 看黄色的网址 | 亚洲精品在线中文字幕 | 精品人妻一区二区三区潮喷在线 | 欧美精品系列 | 国产精品无码一本二本三本色 | 成人免费高清在线播放 | 亚洲精品一二三 | 日本特黄特色aaa大片免费 | 中文字幕国产亚洲 | 免费中文字幕日韩欧美 | 初高中福利视频网站 | 日本三级日本三级日本三级极 | 日韩av影视大全 | 黄色污在线观看 | 极品美女高潮出白浆 | 亚洲欧美国产视频 | 永久免费看黄 | 色视频在线免费观看 | 日本乱轮视频 | 爱乃なみ加勒比在线播放 | 欧美日韩激情网 | 中文字幕在线观看三区 | 一区二区视屏 | 国产精品国产三级国产aⅴ无密码 | 国产性猛交xxxx免费看久久 | 激情五月婷婷丁香 | 97xxxxx| 一级黄色毛毛片 | 国产日产欧美一区二区 | 激情国产一区 | 午夜成年人视频 | 深爱激情久久 | 波多野结衣黄色片 | 精品美女在线观看 | 成人av动漫 | 99久久综合网 | 视频黄色免费 | www.日韩欧美 | 密臀av| 1024精品一区二区三区日韩 | 成人乱人乱一区二区三区一级视频 | 久久久久久久久久免费视频 | 国产资源在线视频 | 免费特级黄毛片 | 无码精品人妻一区二区三区漫画 | 红桃视频成人在线 | 日本视频二区 | 久草视频在线观 | 成人在线观看一区 | 蜜桃成熟时李丽珍在线观看 | 高跟鞋和丝袜猛烈xxxxxx | 男人午夜天堂 | 国产又粗又猛又黄又爽无遮挡 | 国产精品一级二级 | 嫩草综合 | 韩国三级hd两男一女 | 波多野结衣在线电影 | 国产精品一区二区不卡 | 成人看片网 | 在线播放av网站 | 日韩小视频 | 爱爱三级视频 | 浮妇高潮喷白浆视频 | 俄罗斯videodesxo极品 | 欧美伊人久久 | 懂色av成人一区二区三区 | 亚洲成人av一区二区 | 人妻一区二区三区四区 | 青青草久久久 |