Socket
Pipes
Shared Memory
Socket
- 應用程式間透過 Socket 來溝通
- 底層可以由 TCP 與 UDP 實作
Pipes
Ordinary Pipes
Named Pipes
Shared Memory
Golang

- Do not communicate by sharing memory; instead, share memory by communicating.
- Go 語言中的 Channel 就提供了 Goroutine 之間用於傳遞資訊的方式,它在內部實現時就廣泛用到了共用記憶體 ( Shared Memory ) 和鎖 ( Lock ) ,通過對兩者進行的組合提供了更高級的同步機制。
- Channel 有分兩種:
- Unbuffered
- 當 Channel 被放入值時,需要等到 Channel 的值被讀出來後程式才能繼續執行。
- 不能在相同 Goroutine 中同時讀寫,否則會形成 Deadlock。
- Buffered
- 有容量限制
- 當 Channel 被放入值時,不需等到 Channel 的值被讀出來後程式才能繼續執行。
- 可以在相同 Goroutine 中同時讀寫
Fan-Out Fan-In Pattern