亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2016年09月13日 14:27:38   投稿:daisy  
大家都知道golang并沒有在語言層次上提供超時(shí)操作,但可以通過一些小技巧實(shí)現(xiàn)超時(shí)。下面來一起看看吧,有需要的朋友們可以參考借鑒。

實(shí)現(xiàn)原理:

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

實(shí)現(xiàn)代碼:

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

總結(jié)

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

相關(guān)文章

  • go語言基礎(chǔ)語法示例

    go語言基礎(chǔ)語法示例

    這篇文章主要介紹了go語言基礎(chǔ)語法示例,介紹了go語言較為全面的基礎(chǔ)知識(shí),具有一定參考價(jià)值,需要的可以了解下。
    2017-11-11
  • Go中時(shí)間與時(shí)區(qū)問題的深入講解

    Go中時(shí)間與時(shí)區(qū)問題的深入講解

    go語言中如果不設(shè)置指定的時(shí)區(qū),通過time.Now()獲取到的就是本地時(shí)區(qū),下面這篇文章主要給大家介紹了關(guān)于Go中時(shí)間與時(shí)區(qū)問題的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • golang 切片截取參數(shù)方法詳解

    golang 切片截取參數(shù)方法詳解

    這篇文章主要介紹了golang 切片截取參數(shù)方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Go語言錯(cuò)誤處理異常捕獲+異常拋出

    Go語言錯(cuò)誤處理異常捕獲+異常拋出

    這篇文章主要介紹了Go語言錯(cuò)誤處理異常捕獲和異常拋出,Go語言的作者認(rèn)為java等語言的錯(cuò)誤處理底層實(shí)現(xiàn)較為復(fù)雜,就實(shí)現(xiàn)了函數(shù)可以返回錯(cuò)誤類型以及簡單的異常捕獲,雖然簡單但是也非常精妙,大大的提高了運(yùn)行效率,下文需要的朋友可以參考一下
    2022-02-02
  • 一文帶你掌握掌握 Golang結(jié)構(gòu)體與方法

    一文帶你掌握掌握 Golang結(jié)構(gòu)體與方法

    在 Golang 中,結(jié)構(gòu)體和方法是實(shí)現(xiàn)面向?qū)ο缶幊痰闹匾M成部分,也是 Golang 的核心概念之一。在本篇文章中,我們將深入介紹 Golang 結(jié)構(gòu)體與方法的概念、使用方法以及相關(guān)的編程技巧和最佳實(shí)踐
    2023-04-04
  • Golang錯(cuò)誤處理:異常捕捉和恢復(fù)機(jī)制

    Golang錯(cuò)誤處理:異常捕捉和恢復(fù)機(jī)制

    Golang中,異常處理是通過 defer + panic + recover 的方式來實(shí)現(xiàn)的,使用 defer 可以將清理操作注冊(cè)到函數(shù)執(zhí)行完畢后執(zhí)行,而 panic 和 recover 可以用于處理異常,通過組合使用這些功能,可以實(shí)現(xiàn)更加健壯的程序
    2024-01-01
  • Go語言實(shí)戰(zhàn)之詳細(xì)掌握正則表達(dá)式的應(yīng)用與技巧

    Go語言實(shí)戰(zhàn)之詳細(xì)掌握正則表達(dá)式的應(yīng)用與技巧

    正則表達(dá)式是一種從左到右與主題字符串匹配的模式,正則表達(dá)式用于替換字符串中的文本,驗(yàn)證表單,基于模式匹配從字符串中提取子字符串等等,這篇文章主要給大家介紹了關(guān)于Go語言實(shí)戰(zhàn)之詳細(xì)掌握正則表達(dá)式的應(yīng)用與技巧,需要的朋友可以參考下
    2023-12-12
  • 如何在Go中使用Casbin進(jìn)行訪問控制

    如何在Go中使用Casbin進(jìn)行訪問控制

    這篇文章主要介紹了如何在Go中使用Casbin進(jìn)行訪問控制,Casbin是一個(gè)強(qiáng)大的、高效的開源訪問控制框架,其權(quán)限管理機(jī)制支持多種訪問控制模型,Casbin只負(fù)責(zé)訪問控制
    2022-08-08
  • Golang語言學(xué)習(xí)拿捏Go反射示例教程

    Golang語言學(xué)習(xí)拿捏Go反射示例教程

    這篇文章主要為大家介紹了Golang語言中Go反射示例的教程,教你拿捏Go反射,再也不用被Go反射折磨,有需要的朋友可以共同學(xué)習(xí)參考下
    2021-11-11
  • Golang中context庫的高級(jí)應(yīng)用

    Golang中context庫的高級(jí)應(yīng)用

    context庫不僅對(duì)于提升代碼的效率和性能至關(guān)重要,而且還幫助開發(fā)者在復(fù)雜的系統(tǒng)中保持代碼的清晰和可維護(hù)性,下面我們就來看看context庫的高級(jí)應(yīng)用吧
    2024-01-01

最新評(píng)論