Go 支持 Scatter-Gather IO 操作

标签 go io system-calls unix-socket

我想在 Go 中开发基于 Unix 域套接字的高性能客户端-服务器通信协议(protocol)。具体来说,我正在考虑采用 Vector-IO 操作(writev/readv 系统调用)以避免结构化数据序列化的开销。但是,我认为 Go 并不完全支持使用 scatter-gather io 操作。我发现了一些为 writev 操作提供 Go 支持但不支持 readv 的尝试。有没有一种方法可以在 Go 中实现它和/或在性能方面有什么替代方案?

最佳答案

使用net.Buffers使用 writev 或类似的优化批量写入。

对于读取,将数据放入单个缓冲区和 slice根据需要缓冲。

关于Go 支持 Scatter-Gather IO 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57252423/

相关文章:

go - 在 CentOS 7 上将 Go 作为守护进程网络服务器运行

linux - go package "Syscall()"中的 "syscall"是什么意思?

正确的 kill syscall linux 使用模式

java - Appengine 和 java.io 的使用

python - 在 Python 中运行 ioctl 返回 ENOTTY - 不适合设备的 ioctl

json - json:无法将对象解编为具有某些值的类型错误的Go值

go - Go中多个for循环中的多个变量

android - 错误 400 : Invalid Value, 无效

c - 在另一个线程中写入文件是否安全?

java - JAVA中的异常处理、创建日志并继续程序