記錄 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...