我想實現tcp零拷貝使用提升,但我無法找到谷歌任何東西。我的問題是有可能使用boost庫執行零拷貝,如果是這樣請 給我一些例子或一些鏈接。TCP零拷貝使用提升
5
A
回答
6
你可以通過Yandex的人看這部BoostCon談話:The Optimization of a Boost.Asio-based Networking Server
我的直覺說,他們(Yandex的傢伙)過度設計這個(很有點...)。我認爲最重要的解決方案就是使用預分配的固定緩衝區(可能是每個線程),並使用Asio的MutableBufferSequence概念將它們粘合在一起。
這種方法被稱爲Scatter-Gather並且僅在Asio文檔中進行簡要描述。在這裏可能有一個相關的例子:http://www.boost.org/doc/libs/1_56_0/doc/html/boost_asio/examples/cpp11_examples.html#boost_asio.examples.cpp11_examples.buffers
由於@Nim已經評論,Asio默認情況下工作在「零複製」模式(因爲它從來沒有擁有一個緩衝區,也沒有代表調用者分配)。所以它實際上應該很簡單。當然,內核/ libc函數是否以零拷貝方式實現完全取決於OS /平臺。
相關問題
- 1. Linux零拷貝
- 2. 提升非拷貝是私人錯誤
- 3. 零拷貝在Linux中使用vmsplice/splice
- 4. 零拷貝機制和libpcap
- 5. 零拷貝接收函數
- 6. Netty的零拷貝是否與操作系統級零拷貝不同?
- 7. 淺拷貝或深拷貝?
- 8. 我們可以使用默認的linux TCP/IP協議棧的TCP send/recv的零拷貝嗎?
- 9. JVM上的零拷貝消息傳遞
- 10. 在OpenCL零拷貝訪問路徑
- 11. Python支持零拷貝I/O嗎?
- 12. CUDA是否固定內存零拷貝?
- 13. 零拷貝接收和郵件大小
- 14. Linux內核splice()是否零拷貝?
- 15. JavaScript深拷貝使用JSON
- 16. 拷貝數據使用SQL
- 17. 使用追加方法的Python淺拷貝和深拷貝
- 18. 拷貝
- 19. 使用sendfile代替發送到零拷貝udp套接字
- 20. 如何使用WebClient執行零拷貝上載和下載?
- 21. 如何使用OpenCL直接寫入到零拷貝的linux framebuffer?
- 22. 使用CUDA的GPU設備和零拷貝固定內存
- 23. 淺拷貝和深拷貝在C
- 24. C++類拷貝(指針拷貝)
- 25. 硬拷貝vs淺拷貝javascript
- 26. 淺拷貝和深拷貝示例
- 27. 深拷貝
- 28. 拷貝目錄
- 29. Postscript拷貝數
- 30. 淺拷貝
'boost :: asio'是零拷貝,因爲它不會複製你通過它的緩衝區。但是,是否通過tcp堆棧使用零拷貝操作 - 這是一個不同的問題。 – Nim 2014-09-01 08:14:03