欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

使用Golang怎么實現(xiàn)超時退出

這期內(nèi)容當中小編將會給大家?guī)碛嘘P使用Golang怎么實現(xiàn)超時退出,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站設計、成都做網(wǎng)站、湘潭縣網(wǎng)絡推廣、小程序設計、湘潭縣網(wǎng)絡營銷、湘潭縣企業(yè)策劃、湘潭縣品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供湘潭縣建站搭建服務,24小時服務熱線:18982081108,官方網(wǎng)址:www.aaarwkj.com

1、通過context的WithTimeout設置一個有效時間為800毫秒的context。

2、該context會在耗盡800毫秒后或者方法執(zhí)行完成后結(jié)束,結(jié)束的時候會向通道ctx.Done發(fā)送信號。

3、有人可能要問,你這里已經(jīng)設置了context的有效時間,為什么還要加上這個time.After呢?

這是因為該方法內(nèi)的context是自己申明的,可以手動設置對應的超時時間,但是在大多數(shù)場景,這里的ctx是從上游一直傳遞過來的,對于上游傳遞過來的context還剩多少時間,我們是不知道的,所以這時候通過time.After設置一個自己預期的超時時間就很有必要了。

4、注意,這里要記得調(diào)用cancel(),不然即使提前執(zhí)行完了,還要傻傻等到800毫秒后context才會被釋放。

總結(jié)

上面的超時控制是搭配使用了ctx.Done和time.After。

Done通道負責監(jiān)聽context啥時候完事,如果在time.After設置的超時時間到了,你還沒完事,那我就不等了,執(zhí)行超時后的邏輯代碼。

舉一反三

那么,除了上面這種超時控制策略,還有其他的套路嗎?

有,但是大同小異。

第一種:使用time.NewTimer

func AsyncCall() {
 ctx, cancel := context.WithTimeout(context.Background(), time.Duration(time.Millisecond * 800))
 defer cancel()
 timer := time.NewTimer(time.Duration(time.Millisecond * 900))

 go func(ctx context.Context) {
 // 發(fā)送HTTP請求
 }()

 select {
 case <-ctx.Done():
 timer.Stop()
 timer.Reset(time.Second)
 fmt.Println("call successfully!!!")
 return
 case <-timer.C:
 fmt.Println("timeout!!!")
 return
 }
}

這里的主要區(qū)別是將time.After換成了time.NewTimer,也是同樣的思路如果接口調(diào)用提前完成,則監(jiān)聽到Done信號,然后關閉定時器。

否則的話,會在指定的timer即900毫秒后執(zhí)行超時后的業(yè)務邏輯。

第二種:使用通道

func AsyncCall() {
 ctx := context.Background()
 done := make(chan struct{}, 1)

 go func(ctx context.Context) {
 // 發(fā)送HTTP請求
 done <- struct{}{}
 }()

 select {
 case <-done:
 fmt.Println("call successfully!!!")
 return
 case <-time.After(time.Duration(800 * time.Millisecond)):
 fmt.Println("timeout!!!")
 return
 }
}

1、這里主要利用通道可以在協(xié)程之間通信的特點,當調(diào)用成功后,向done通道發(fā)送信號。

2、監(jiān)聽Done信號,如果在time.After超時時間之前接收到,則正常返回,否則走向time.After的超時邏輯,執(zhí)行超時邏輯代碼。

3、這里使用的是通道和time.After組合,也可以使用通道和time.NewTimer組合。

上述就是小編為大家分享的使用Golang怎么實現(xiàn)超時退出了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章題目:使用Golang怎么實現(xiàn)超時退出
本文地址:http://www.aaarwkj.com/article20/igeoco.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站收錄、企業(yè)建站、、網(wǎng)站改版、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
亚洲一区二区精品免费视频| 日本一区二区中文字幕视频| 国产精品区一区二区三区| 免费人妻一区二区三区| 女性裸体无遮挡啪啪网站| 在线视频一区二区三区精品观看| 色琪琪原网另类欧美日韩| 欧美亚洲午夜精品久久久| 亚洲国产成人精品久久精品| 欧美一区二区三在线| 国产一区二区精品性浆| 亚洲av网站一区二区三区| 欧美制服丝袜亚洲自拍偷拍| 一区二区三区乱码国产在线| 黄色av免费播放网站| 亚洲熟女av一区少妇| 香蕉夜夜草草久久亚洲香蕉| 午夜精品久久福利视频| 最新在线中文字幕av不卡| 亚洲欧美一区二区色慰| 日韩人妻精品久久免费| 精品国产自在久久成人| 国产精品乱码一区二区视频| 裸体性做爰免费视频网站| 91中文字幕精品一区二区| 亚洲精品一区二区影院| 国产女主播在线观看一区| 97视频网站在线观看| 国产无套内射三级视频| 日韩欧美国产精品加勒比| 国产精品中文字幕第一页| 国产伦国产一区二区三区在线观看| 日韩欧美在线一区二区| 未满十八周岁禁看视频| 国产自愉自愉免费精品七| 日本高清中文精品在线不卡| 日本经典三级视频在线观看| 亚洲一区二区四区乱码在线| 国产大神91一区二区三区| 日韩永久免费av网站| 少妇熟女视频一区二区三区|