Released gnet v1.6.0

gnet client is now available for production! Features Add a new event handler: AfterWrite() 6a654c Implement the gnet client


Released gnet v1.5.2

Enhancements About poller By default, gnet utilizes the standard package golang.org/x/sys/unix to implement pollers with epoll or kqueue, where a HASH


Released gnet v1.5.0

Features Move the logging module out of the internal package and refactor to make it serviceable for users d56606 b6b1cf


Go 语言中的零拷贝优化

相信那些曾经使用 Go 写过 proxy server 的同学应该对 io.Copy()/io.CopyN()/io.CopyBuffer()/io.ReaderFrom 等接口和方法不陌生,它们是使用 Go 操作各类 I/O 进行数据传输经常需要使用到的 API,其中基于 TCP 协议的 socket 在使用上述接口和方法进行数据传输时利用到了 Linux 的零拷贝技术 sendfile 和 splice。 我前段时间为 Go 语言内部的 Linux splice 零拷贝技术做了一点优化:为 splice 实现了一个 pipe pool,复用管道,减少频繁创建和销毁 pipe buffers 所带来的系统开销,理论上来说能够大幅提升 Go 的 io 标准库中基于 splice 零拷贝实现的 API 的性能。因此,我想从这个优化工作出发,分享一些我个人对多线程编程中的一些不成熟的优化思路。


Released gnet v1.4.0

Features Support TCP_NODELAY socket option 525df8 Implement the lock-free queue for dispatching tasks faster #181 Enhancements Shrink the ring-buffer