當前位置:
首頁 >
Go语言学习笔记 - PART13 - 协程与通道
發布時間:2025/3/15
29
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Go语言学习笔记 - PART13 - 协程与通道
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
協程
應用程序處理并發的部分
- 協程跟操作系統的線程之間不是一對一的關系
- 協程是獨立執行的,它們之間必須同行才會變得有用
通道
負責協程之間的通信,從而避免所有由共享內存導致的陷阱
- 通道只能傳輸一種類型的數據(任意一種類型)
- 通道聲明方式
- 通信操作符 : 標識數據的傳輸,數據按照箭頭的方向流動
- for循環從通道中獲取數據
- 指定通道的方向
- 關閉通道
- 通道是可以被顯示關閉的;只有發送方需要關閉通道,接收方不需要關閉通道
- close函數關閉通道
- 將通道標記為無法通過發送操作<-接受更多的值;給已經關閉的通道發送或者再次關閉都會導致運行時的 panic
- 檢測通道是否關閉
協程切換
select {case u:= <- ch1:...case v:= <- ch2:......default: // no value ready to be received...} 復制代碼- 通過select關鍵字,從不同的并發執行的協程中獲取值
- select關鍵字可以監聽進入通道的數據或從通道出去的數據
- select 要做的事,選擇處理列出多個通信情況中的一個
- 如果都阻塞了,會等待知道其中一個可以處理
- 如果多個可以處理,隨機選擇一個
- 如果沒有通道操作可以處理,但寫了default語句,它就會執行default(確保不被阻塞)
入門教程推薦: github.com/Unknwon/the…
總結
以上是生活随笔為你收集整理的Go语言学习笔记 - PART13 - 协程与通道的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql8双机热备高可用配置
- 下一篇: mobaxterm用alt键作为meta