计算机
c base
c++ 基础 作用域及生命周期
c++ template
c++ 内存视角
c++ 函数指针
c++ 基础 基础语法
c++ 多线程
c++ 性能
c++ 类 基础
c++ 类 对象模型 类析构
c++ 类 设计模式
cmake
CMAKE环境搭建 windows
创建第一个cmakelists.txt
构建稍复杂的项目
动态链接库
EX1
EX1 START
EX1 ANSWER
EX2
EX2 START
EX2 ANSWER
EX3
EX3 START
EX3 ANSWER
变量
控制流程
函数和宏
查找和使用外部库
生成器表达式
qt 开发环境
qt c++
理解QObject 1
理解QObject 4
qt index
qt qml quick
qt ui
qt 多线程
数据结构 数组
PC问题监控及排查
PC程序性能优化
OS
TOOL
C++ STL
编程漫谈
C++实战-生产者 消费者流水线
C++实战 IO
本站点使用 MrDoc 构建
-
+
C++实战 IO
## 1. 按 I/O 对象分类(最常用) 1. **文件 I/O(File I/O)** * 读写磁盘文件、SSD、块设备 * 典型接口:`open/read/write/lseek`,C++ `fstream` 2. **网络 I/O(Network I/O / Socket I/O)** * TCP/UDP、Unix domain socket * 典型接口:`socket/connect/send/recv`,`epoll`/`select` 事件驱动 ### 网络IO socket与缓冲区 3. **标准 I/O(Standard I/O)** * `stdin/stdout/stderr`(控制台、重定向到文件/管道也算) * 典型接口:`printf/scanf`、`cin/cout` 4. **设备 I/O(Device I/O)** * 键盘鼠标、串口、摄像头、GPIO 等(本质多通过设备文件或专用 API) * Linux 常见表现为 `/dev/*` 5. **进程间通信 I/O(IPC I/O)** * **管道/匿名管道**(pipe) * **命名管道**(FIFO) * **共享内存**(严格说更像内存访问,但常归类 IPC) - 像管道一样串一条处理链:Pipe / FIFO - 本机客户端-服务端、多连接、需要权限控制:Unix Domain Socket - 大数据量、极致性能:共享内存 + 同步/通知(semaphore/eventfd) - 异步任务、削峰、解耦:消息队列 - 仅通知/控制:signal ## 2. 按访问/等待方式分类(谈性能/并发时常用) 1. **阻塞 I/O(Blocking I/O)** 调用 `read/recv` 时没数据就一直等;`write/send` 缓冲区满就等。 2. **非阻塞 I/O(Non-blocking I/O)** 立即返回:没数据返回 `EAGAIN`;常配合 `select/poll/epoll` 重试。 3. **I/O 多路复用(select/poll/epoll/kqueue)** 一个线程同时等待多个 fd 的可读/可写事件;高并发网络常用。 4. **信号驱动 I/O(Signal-driven I/O)** 内核用信号通知 fd 就绪(如 `SIGIO`),用得相对少。 5. **异步 I/O(Asynchronous I/O, AIO/IOCP)** 发起 I/O 后立刻返回,完成后用回调/事件通知;Windows IOCP、Linux `io_uring`/POSIX AIO 等。 ## 3. 按数据访问形态分类(文件/存储常用) 1. **顺序 I/O** vs **随机 I/O** 顺序读写一般更快;随机 I/O 更依赖存储介质和缓存。 2. **缓冲 I/O** vs **直接 I/O(Direct I/O)** * 缓冲 I/O 走页缓存(page cache) * Direct I/O(如 `O_DIRECT`)绕过页缓存,常用于数据库/存储引擎 3. **内存映射 I/O(mmap)** 把文件映射到内存,通过内存读写间接完成 I/O。
peipeo
2026年5月12日 09:18
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码