Go select

select

Unix中 select 想到的都是系統調用, I/O 模型時大都會提到基於 selectpollepoll 等函數構建的 IO 多路複用模型。Go 語言的 select 與 C 語言中的 select 有着比較相似的功能。

主要特性:

  • 每個case都必須是一個通信

  • select 能在 Channel 上進行非阻塞的收發操作;

  • select 在遇到多個 Channel 同時響應時會隨機挑選 case 執行;

  • 如果沒有default字句,select將阻塞,直到某個通信可以運行;

非阻塞收發

存在收發的Channel時,直接處理該channel對應的case;

不存在可以收發的channel時,如果存在default,會執行default中的語句;

阻塞收發

沒有case條件,會阻塞;

不存在可以收發的channel,且不存在default會一直阻塞;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章