其他操作系统是否实现了Linux系统调用拼接?

Cet*_*ert 5 sockets implementation operating-system system-calls splice

在我正在开发的应用程序中,我splice在Linux上用于套接字到套接字数据传输.

  1. 其他操作系统(特别是至少Windows,OS X和FreeBSD)是否实现splice或等效的解决方案?
  2. 是否可以splice使用sendfile¹+ memmap¹ 模拟Windows上的套接字到套接字数据?

¹两者都存在于不同名称的Windows上,我不记得了.


更新

您可以splice在Linux上看到vs用户空间缓冲区的性能改进.

走

  • DF,DR,F,MF,MR是我在不同隧道模式的应用,NX是NGINX Web服务器
  • -p+t 使用Linux系统调用 splice
  • +p-t 使用带有用户空间缓冲区的便携式实现
  • +p+t 使用具有用户空间缓冲区和多个OS线程的可移植实现
  • 条形表示以每秒千兆比特为单位的吞吐量
  • 一个1千兆字节(1048576000字节)的文件由4个并发客户端重复4次