Go channel特點篇

channel模式

根據(jù)同步方式不同,channel有兩種模式:
1、同步模式,形式如下:

ch := make(chan int)

2、隊列模式,形式如下:

ch := make(chan int, 10)

根據(jù)數(shù)據(jù)方向流不同,channel類型可以有以下三種模式:

  1. 寫操作模式(只發(fā)送)
  2. 讀操作模式(只接收)
  3. 讀寫操作模式(不限發(fā)送與接收)

channel操作

channel有以下操作:

  1. 創(chuàng)建
  2. 關(guān)閉
  3. 寫(發(fā)送)操作
  4. 讀(接收)操作
    這些操作都是原子操作

channel狀態(tài)

根據(jù)模式與操作,channel有以下狀態(tài):

  1. 同步寫阻塞
  2. 同步讀阻塞
  3. 關(guān)閉狀態(tài)
  4. 隊列寫阻塞
  5. 隊列讀阻塞
  6. 隊列可讀寫
  7. nil狀態(tài)

channel狀態(tài)與操作之間關(guān)系

狀態(tài)/操作 寫操作 讀操作 關(guān)閉 創(chuàng)建
nil狀態(tài) 寫阻塞 寫阻塞 產(chǎn)生panic(close of nil channel) -
同步寫阻塞 寫阻塞 成功讀取數(shù)據(jù) 進(jìn)入關(guān)閉狀態(tài),產(chǎn)生panic -
同步讀阻塞 成功寫入數(shù)據(jù) 讀阻塞 進(jìn)入關(guān)閉狀態(tài) -
關(guān)閉狀態(tài) 產(chǎn)生panic 立即返回(nil,false) 產(chǎn)生panic -
隊列寫阻塞 寫阻塞 成功讀取隊列中數(shù)據(jù) 進(jìn)入關(guān)閉狀態(tài),成功寫入隊列的數(shù)據(jù)可讀 -
隊列讀阻塞 成功寫入數(shù)據(jù) 讀阻塞 進(jìn)入關(guān)閉狀態(tài) -
隊列可讀寫 成功寫入數(shù)據(jù) 成功讀取數(shù)據(jù) 進(jìn)入關(guān)閉狀態(tài),成功寫入隊列的數(shù)據(jù)可讀 -

由于個人水平有限,有什么不足與錯誤,敬請指正!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • kafka的定義:是一個分布式消息系統(tǒng),由LinkedIn使用Scala編寫,用作LinkedIn的活動流(Act...
    時待吾閱讀 5,539評論 1 15
  • 第三章 Java內(nèi)存模型 3.1 Java內(nèi)存模型的基礎(chǔ) 通信在共享內(nèi)存的模型里,通過寫-讀內(nèi)存中的公共狀態(tài)進(jìn)行隱...
    澤毛閱讀 4,502評論 2 21
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評論 19 139
  • 一、多線程 說明下線程的狀態(tài) java中的線程一共有 5 種狀態(tài)。 NEW:這種情況指的是,通過 New 關(guān)鍵字創(chuàng)...
    Java旅行者閱讀 4,865評論 0 44
  • 青春是用來懷念的,懷念瘋狂過的時光。懷念校園時代逝去的一切,都是那么鮮活,懷念那時的我們好像永遠(yuǎn)有用不完的精力。 ...
    小哧閱讀 1,155評論 0 3

友情鏈接更多精彩內(nèi)容