成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go開發 Channel 徹底研究之Select基礎

開發 前端
如果都不能執行,且有default語句時,就執行default,如果沒有default語句,那么select整個就會阻塞(導致所在協程阻塞),直到解除。

為什么需要select?

有時會遇到這種情景:需要對多個channel進行監聽。

如圖所示,就像一個人監聽多個通道一樣,假如采用for循環形式

for{
d1,ok:=<-c1
//...
d2,ok:=<-c2
//...
....
}

這個方式肯定走不通,原因是一旦某個通道監聽阻塞了,下面的部分都不會執行到。有沒有一種方法,像治安巡查一樣一輪輪的輪詢,那么就可以解決這個問題了。

go提供了select,正對應輪詢的思路,模式如下:

select{
case xx:
case xx:
case xx:
default:xx
}

運行過程

從上往下“巡查”,如果發現哪個case處于可執行狀態,就執行該條語句,那么其余語句就不執行了。

如果都不能執行,且有default語句時,就執行default

如果沒有default語句,那么select整個就會阻塞(導致所在協程阻塞),直到解除。

但有人會有疑問,上面這些語句不是只能輪詢一次嗎?這個容易解決,我們給select外層再加一個for循環,這樣就可以無限的輪詢。

for{
select{
case xx:
case xx:
........
}
}

模式基本形成了。

客戶和服務端交互模擬

下面先看一個基礎的例子,主要用來模仿客戶和服務端的交互,模型如下:

ch := make(chan string)

//模擬啟動服務端
go func(ch chan string) {
for {
data := <-ch
fmt.Println("服務端接收到數據:", data)
time.Sleep(time.Second * 2)
//'roger'表示信息收到的意思..
ch <- "roger"
}
}(ch)

//模擬客戶端一次請求
ch <- "hello,服務端!"
select {
case ack := <-ch:
fmt.Println(ack)
case <-time.After(time.Second):
fmt.Println("返回超時...")

}

分析

  1. 服務端需要持續服務,因此采用for無限循環形式
  2. 客戶端的返回值就是和超時進行速度PK。
責任編輯:武曉燕 來源: 今日頭條
相關推薦

2023-03-10 07:46:55

Go開發Channelselect

2023-05-29 09:25:38

GolangSelect

2020-12-27 10:15:44

Go語言channel管道

2021-10-09 19:05:06

channelGo原理

2021-10-11 11:58:41

Channel原理recvq

2023-07-13 08:06:05

應用協程阻塞

2024-09-06 10:48:13

2021-06-09 09:06:52

Go語言算法

2021-02-06 18:19:54

TimeGo語言

2021-09-01 18:38:59

Goselectdefault

2019-12-10 13:55:10

Go指針存儲

2023-07-27 13:46:10

go開源項目

2020-12-02 08:45:36

Go語言

2020-11-30 06:17:03

Go語言

2020-11-26 06:40:24

Go語言基礎

2020-11-23 08:54:14

Go語言結構體

2023-11-03 18:03:54

Web應用Python

2022-02-22 08:55:29

SelectPoll/ Epoll

2024-06-19 10:08:34

GoChannel工具

2023-12-20 07:30:54

Goselect編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久在线 | 久久大陆 | 久草免费电影 | 精品1区2区| 污视频在线免费观看 | 成人在线视频网址 | 精品国产一区二区在线 | 午夜av电影| 成人 在线 | 国产乱码精品一区二区三区五月婷 | 91麻豆精品国产91久久久更新资源速度超快 | 91福利影院 | 精品国产乱码久久久久久蜜退臀 | 国产精品久久久久无码av | 日韩毛片中文字幕 | 日韩中文字幕在线观看 | 国产成人精品一区二区在线 | 欧美精品一区在线 | 精品久久久久久久久久久下田 | 91欧美激情一区二区三区成人 | 免费观看一级黄色录像 | 一区二区不卡 | 国产国产精品久久久久 | 国产精品123区 | 亚洲欧洲日本国产 | 久久夜视频 | 午夜视频免费网站 | 欧美激情精品久久久久久变态 | 自拍偷拍第一页 | www国产精品| 色综合视频 | 欧美极品在线 | 国产一区二区三区在线视频 | 国产激情片在线观看 | 夜夜爽99久久国产综合精品女不卡 | 伊人狠狠干| 日本精品裸体写真集在线观看 | 亚洲夜夜爽 | 操人视频在线观看 | 亚洲精品片 | 综合色播 |