2
我已經看到許多tcp/ip的開源框架和最佳實踐建議不要重複使用傳遞給tcp層進行傳輸的緩衝區。它背後的原因是什麼?緩衝區是不是真的被複制到內核中,那麼關於不重用緩衝區的內容是什麼? 一個典型的例子的上述將將是爲什麼不重用消息緩衝區在tcp的情況下
char data[1024] = {'1', '2'.................'1024'};
write(socket, data, 1024);
data = {'a', 'b','c'...........}; //reusing the buffer
ZeroMQ提供API,以創建一個緩衝區,並刪除它和它們強烈建議不使用它。 Netperf創建一個環緩衝區並確保它不會重用它當前寫入套接字的緩衝區。
你可以更具體一些,並複製粘貼一個片段,它與一個建議的替代方案?我目前唯一的猜測是,這可能是在預期[零拷貝](http://en.wikipedia.org/wiki/Zero-copy)API的情況下完成的。 – dasblinkenlight
它必須完全取決於您使用的界面。如果你上面寫的代碼被破壞了,那麼很多程序都被破壞了。在調用write()之後掛在緩衝區上的唯一原因是寫入不能寫入所有數據,並且必須再次調用它。 –
我從來沒有在20多年的網絡編程中看到這個毫無意義的建議。你在哪裏讀過的? – EJP