【问题标题】:Go support for Scatter-Gather IO operationsGo 支持 Scatter-Gather IO 操作
【发布时间】:2019-07-29 11:00:07
【问题描述】:

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

【问题讨论】:

    标签: go io system-calls unix-socket


    【解决方案1】:

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

    对于读取,将数据收集到单个缓冲区中,并根据需要 slice 缓冲区。

    【讨论】:

    • 网络?文件呢?我需要使用writev() syscall 将多条数据写入磁盘
    猜你喜欢
    • 2020-05-07
    • 2019-01-13
    • 1970-01-01
    • 2011-06-01
    • 2018-09-11
    • 2020-05-03
    • 1970-01-01
    • 2016-07-14
    • 2018-12-27
    相关资源
    最近更新 更多