linux网络编程之用select函数实现io复用(基于TCP)引发的思考
生活随笔
收集整理的這篇文章主要介紹了
linux网络编程之用select函数实现io复用(基于TCP)引发的思考
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、基本概念
IO多路復用是指內核一旦發現進程指定的一個或者多個IO條件準備讀取,它就通知該進程。IO多路復用適用如下場合:
(1)當客戶處理多個描述字時(一般是交互式輸入和網絡套接口),必須使用I/O復用。
(2)當一個客戶同時處理多個套接口時,而這種情況是可能的,但很少出現。
(3)如果一個TCP服務器既要處理監聽套接口,又要處理已連接套接口,一般也要用到I/O復用。
(4)如果一個服務器即要處理TCP,又要處理UDP,一般要使用I/O復用。
(5)如果一個服務器要處理多個服務或多個協議,一般要使用I/O復用。
與多進程和多線程技術相比,I/O多路復用技術的最大優勢是系統開銷小,系統不必創建進程/線程,也不必維護這些進程/線程,從而大大減小了系統的開銷。
2、select函數
該函數準許進程指示內核等待多個事件中的任何一個發送,并只在有一個或多個事件發生或經歷一段指定的時間后才喚醒。函數原型如下:
#include <sys/select.h> #include <sys/time.h>int select(int maxfdp1,fd_set *readset,fd_set *writeset,fd_set *exceptset,const struct timeval *timeout)
總結
以上是生活随笔為你收集整理的linux网络编程之用select函数实现io复用(基于TCP)引发的思考的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux之netstat使用--10个
- 下一篇: linux c之STDIN_FILENO