佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Go語言如何并發(fā)超時處理詳解

Go語言如何并發(fā)超時處理詳解

熱門標(biāo)簽:鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 呼叫中心市場需求 AI電銷 服務(wù)外包 地方門戶網(wǎng)站 百度競價排名 Linux服務(wù)器

實現(xiàn)原理:

并發(fā)一個函數(shù),等待1s后向timeout寫入數(shù)據(jù),在select中如果1s之內(nèi)有數(shù)據(jù)向其他channel寫入則會順利執(zhí)行,如果沒有,這是timeout寫入了數(shù)據(jù),則我們知道超時了。

實現(xiàn)代碼:

package main 
import "fmt"
import "time"
func main() {
 ch := make(chan int, 1)
 timeout := make(chan bool, 1)
 // 并發(fā)執(zhí)行一個函數(shù),等待1s后向timeout寫入true
 go func() {
 time.Sleep(1000)
 timeout - true
 }()
 // 這里會等待ch或timeout讀出數(shù)據(jù)
 // 因為一直沒有向ch寫入數(shù)據(jù)
 // 在1s后向timeout寫入了數(shù)據(jù)
 // 所以執(zhí)行了timeout的case
 // 利用這個技巧可以實現(xiàn)超時操作
 select {
 case - ch :
 fmt.Println("read from ch")
 case - timeout :
 fmt.Println("time out...")
 }
}

總結(jié)

以上就是這篇文章的全部內(nèi)容,希望對大家的學(xué)習(xí)或者工作帶來一定的幫助,如果有疑問大家可以留言交流。

您可能感興趣的文章:
  • 在Go中構(gòu)建并發(fā)TCP服務(wù)器
  • Go 并發(fā)實現(xiàn)協(xié)程同步的多種解決方法
  • 詳解Golang 中的并發(fā)限制與超時控制
  • 如何利用Golang寫出高并發(fā)代碼詳解
  • go并發(fā)實現(xiàn)素數(shù)篩的代碼

標(biāo)簽:衡水 崇左 黃山 銅川 仙桃 蘭州 湖南 湘潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Go語言如何并發(fā)超時處理詳解》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    全州县| 临夏县| 水富县| 武定县| 正定县| 神木县| 本溪| 沂源县| 彩票| 昭觉县| 通榆县| 读书| 怀集县| 海晏县| 和林格尔县| 靖边县| 湖口县| 新蔡县| 大新县| 墨玉县| 岫岩| 伊宁市| 翼城县| 康平县| 新巴尔虎左旗| 焦作市| 安阳县| 莱阳市| 秦皇岛市| 阿勒泰市| 永善县| 略阳县| 涟水县| 高雄市| 景德镇市| 连山| 万载县| 阳朔县| 罗江县| 宣武区| 寻甸|