2017-05-29 56 views

回答

0

這將工作,並給予更多的自由,讓兩個程序在不同的計算機上運行。但它在性能方面並不是最好的。

爲了獲得良好的性能,想到共享內存。 https://en.wikipedia.org/wiki/Shared_memory 也許你可以多描述一下你想要做什麼。

1

簡短的回答是否定的。 TCP/IP堆棧很慢,特別是TCP部分。因此,就性能而言,您最好使用本地進程間通信方法,例如應用程序或Unix套接字之間的共享內存。

如果您必須使用網絡堆棧進行通信(例如,您計劃在主機之間移動應用程序),那麼就性能而言,UDP或原始套接字是最佳選擇。

且僅當你:

  1. 必須使用你需要一個可靠的通信信道的網絡和
  2. ,則TCP是一個不錯的選擇。

所以,只是通過您的要求,並決定是否是最好的方法爲你。

+0

共享內存方法會使用通道嗎?我想解耦這個程序,如果一部分失敗了,其他部分仍然可以運行,這就是爲什麼我不考慮使用通道。 – Pig

+0

值得一提的是,UDP不可靠。 TCP關心重傳丟失的包,但UDP不關心。但是,這個_probably_不會發生在同一臺主機上。 – svenwltr

+0

@PNN,共享內存只是一個內存,可能同時被多個程序訪問。組織和同步訪問這個內存的整個負擔都在程序員面前,但這是同一主機上IPC最快的方​​式。對此有各種各樣的技術。通常你只需在這個共享內存中創建一個(無鎖)隊列的「消息」。如果通信的一部分失敗,您的隊列只是空的。一旦另一部分啓動,隊列中就會有新消息... –

相關問題