Skip to content

aerodoge/exercise-c-cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

为什么要使用writev/readv?

传统方式(多次 write)

write(fd, str1, strlen(str1));
write(fd, str2, strlen(str2));
write(fd, str3, strlen(str3));
// 3次系统调用 - 慢!

向量化方式(writev)

writev(fd, iov, 3);
// 1次系统调用 - 快!

优势

  • 减少系统调用次数 - 从用户态切换到内核态的开销很大
  • 原子性 - 数据作为一个整体写入,不会被其他进程的写入打断
  • 避免内存复制 - 不需要先将多个缓冲区合并到一个大缓冲区
  • 更高效 - 特别是在网络编程和文件 I/O 中

常见应用场景

  • 网络编程:发送 HTTP 响应头和正文
  • 文件操作:读写结构化数据(如数据库记录)
  • 日志系统:写入时间戳、级别、消息等多个部分
  • 零拷贝技术:与 sendfile() 等配合使用

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published