假設我在本地主機上運行了兩個分離的Go程序,TCP是兩種程序之間在性能方面傳輸數據的最佳方法嗎?TCP是同一主機中Go程序間通信的最佳方法嗎?
-2
A
回答
0
這將工作,並給予更多的自由,讓兩個程序在不同的計算機上運行。但它在性能方面並不是最好的。
爲了獲得良好的性能,想到共享內存。 https://en.wikipedia.org/wiki/Shared_memory 也許你可以多描述一下你想要做什麼。
1
簡短的回答是否定的。 TCP/IP堆棧很慢,特別是TCP部分。因此,就性能而言,您最好使用本地進程間通信方法,例如應用程序或Unix套接字之間的共享內存。
如果您必須使用網絡堆棧進行通信(例如,您計劃在主機之間移動應用程序),那麼就性能而言,UDP或原始套接字是最佳選擇。
且僅當你:
- 必須使用你需要一個可靠的通信信道的網絡和
- ,則TCP是一個不錯的選擇。
所以,只是通過您的要求,並決定是否是最好的方法爲你。
相關問題
- 1. mmap是進程間通信的最佳方式嗎?
- 2. 在同一主機上設置PHP和Java應用程序的最佳方法
- 3. Delphi Indy TCP客戶端/服務器通信最佳方法
- 4. 在同一臺計算機上運行的Java應用程序之間進行通信的最佳方式
- 5. 大型項目中進程間通信的最佳和最簡單的方法
- 6. 同一臺機器上的應用程序之間最安全的通信方法
- 7. 在同一臺計算機上運行的Python軟件之間進行通信的最佳方式是什麼?
- 8. Autolayout是構建iOS應用程序的最佳方法嗎?
- 9. 從我的REST服務中,確定主叫方主機信息的最佳方法是什麼?
- 10. 在Android TabHost應用程序中完成活動間通信的最佳方式
- 11. 在同一主機上的兩個容器之間的通信
- 12. 在其處理程序中捕獲信號的最佳方法
- 13. 進程間通信的最佳途徑是什麼?
- 14. .NET進程間通信的最佳選擇是什麼?
- 15. 保持與GO聽TCP服務器的最佳方式是什麼?
- 16. 移動應用程序溝通短信的最佳方式
- 17. 2 .Net應用程序之間進行通信的最佳方式?
- 18. 這是在android中使用Run方法的最佳方法嗎?
- 19. 在規範化設計中處理主要通信記錄的最佳方法
- 20. 建立沒有服務器的同等客戶端的雙向TCP通信的最佳方式是什麼?
- 21. 碼頭和主機系統之間的進程間通信
- 22. 確定TCP端口是否可用的最佳perl方法
- 23. 與mac通信iphone的最佳方式?
- 24. OpenCL中GPU與CPU通信的最佳方法
- 25. 在Tomcat容器中應用程序之間進行通信的最佳解決方案是什麼?
- 26. MVC是編寫asp.net應用程序的最佳方式嗎?
- 27. 什麼是OS X中進程間通信的首選方法?
- 28. iPhone/Objective C - ViewController之間的通信/實現的最佳方式?
- 29. WebView和本機之間通信的另一種方法
- 30. 同一臺計算機上的兩個程序之間的通信 - 如何?
共享內存方法會使用通道嗎?我想解耦這個程序,如果一部分失敗了,其他部分仍然可以運行,這就是爲什麼我不考慮使用通道。 – Pig
值得一提的是,UDP不可靠。 TCP關心重傳丟失的包,但UDP不關心。但是,這個_probably_不會發生在同一臺主機上。 – svenwltr
@PNN,共享內存只是一個內存,可能同時被多個程序訪問。組織和同步訪問這個內存的整個負擔都在程序員面前,但這是同一主機上IPC最快的方式。對此有各種各樣的技術。通常你只需在這個共享內存中創建一個(無鎖)隊列的「消息」。如果通信的一部分失敗,您的隊列只是空的。一旦另一部分啓動,隊列中就會有新消息... –