除了維基百科 https://en.wikipedia.org/wiki/Channel_(編程)的解釋之外,我找不到有關這個問題的任何信息。但我對解釋不滿意。渠道解決了什么問題?我們為什么不直接使用普通變量來發送和接收數據呢?
2 回答

UYOU
TA貢獻1878條經驗 獲得超4個贊
例如,如果“正常變量”是指多個 goroutine 寫入和讀取的切片,那么這是獲取數據競賽的有保證的方法(您不想獲得數據競賽)。您可以通過使用某種同步(如互斥或 RWLock)來避免并發訪問。
此時,您
重新發明的通道(基本上是互斥體下的切片)
花費的時間比您需要的時間多,但您的解決方案仍然較差(沒有語法支持,您無法在 中使用切片等)
select

白板的微信
TA貢獻1883條經驗 獲得超3個贊
通道解決了并發讀寫的問題?;旧希乐挂粋€戈魯廷讀取變量而另一個戈魯廷寫入相同變量的情況。
此外,通道也可能具有緩沖區,因此您可以在鎖定之前寫入多個值。
當然,您不必使用頻道。還有其他方法可以在戈魯丁之間發送數據。例如,可以在從共享變量中賦值或讀取值時使用原子操作,或者在訪問互斥鎖時使用互斥鎖。
- 2 回答
- 0 關注
- 89 瀏覽
添加回答
舉報
0/150
提交
取消