我已经看到许多 tcp/ip 的开源框架和最佳实践建议永远不要重用您已交给 tcp 层进行传输的缓冲区。背后的原因是什么?缓冲区只是简单地被复制到内核中是不是真的,那么不重用缓冲区的问题是什么?上述的一个典型例子是
char data[1024] = {'1', '2'.................'1024'};
write(socket, data, 1024);
data = {'a', 'b','c'...........}; //reusing the buffer
ZeroMQ 提供 api 来创建缓冲区并删除它,他们强烈建议不要使用它。Netperf 创建一个环形缓冲区并确保它永远不会重用它当前写入套接字的缓冲区。