epoll ET模式的伺服器

2021-10-08 16:31:06 字數 1186 閱讀 3808

記錄 epoll 程式設計

linux中epoll+執行緒池實現高併發

自己趟過epoll的坑

#include #include #include #include #include #include #include #include #include //write標頭檔案

#include #define max_event 1024

void epolladdfd(int epollfd, int fd)

/* 註冊epoll事件 */

epoll_event event;

event.data.fd=fd; //設定與要處理的事件相關的檔案描述符

event.events=epollin|epollet; //設定要處理的事件型別

epoll_ctl(epollfd,epoll_ctl_add,fd,&event) < 0 //註冊epoll事件

}void main()

//程式掛掉時,有相同本地位址和埠的socket處於time_wait狀態時,重啟程式就需要

int one = 1;

if (setsockopt(serversocketfd, sol_socket, so_reuseaddr, &one, sizeof(one)) < 0)

ret = bind(serversocketfd, (struct sockaddr *)&server_addr, sizeof(server_addr));

if(ret < 0)

ret = listen(serversocketfd,10);

if(ret < 0)

epollfd = epoll_create(max_event);

if(epollfd < 0)

//將 fd 註冊到 epoll

epolladdfd(epollfd, serversocketfd);

while (true)

for(int i = 0; i < ret; ++i)

if (connfd == -1) //幾個引數表示所有請求都接收

}else if (events[i].events & epollin) }}

close(m_epollfd);

close(m_serversocketfd);

}

共享伺服器模式和專用伺服器模式的識別

oracle啟用共享伺服器模式後,還能改回專用伺服器模式嗎?解決 最主要的是3個引數 shared servers max shared servers dispatchers 如果shared servers 0,則資料庫會執行在dedicated模式下。如果shared servers 0,資料...

伺服器 Reactor 模式

併發性不是太高伺服器程式使用這個模式基本就可以滿足。主線程只負責監聽檔案描述上是否有事件,如果有就立即將該事件通知到工作執行緒。讀寫資料 接受新的連線以及處理客戶端的訊息都在工作執行緒。工作流 1 主線程往 epoll 核心事件表中註冊 socket 上的讀就緒事件 2 主線程呼叫 epoll wa...

SQL伺服器模式

伺服器可以以不同的模式來操作,並且可以為不同客戶端應用不同模式。這樣每個應用程式可以根據自己的需求來定製的操作模式。模式定義mysql應支援哪些sql語法,以及應執行哪種資料驗證檢查。這樣可以更容易地在不同的環境中使用mysql,並結合其它伺服器使用mysql。1 可以用 sql mode mode...