Go語(yǔ)言如何并發(fā)超時(shí)處理詳解
實(shí)現(xiàn)原理:
并發(fā)一個(gè)函數(shù),等待1s后向timeout寫入數(shù)據(jù),在select
中如果1s之內(nèi)有數(shù)據(jù)向其他channel
寫入則會(huì)順利執(zhí)行,如果沒(méi)有,這是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)橐恢睕](méi)有向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é)
以上就是這篇文章的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)或者工作帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
Go中時(shí)間與時(shí)區(qū)問(wèn)題的深入講解
go語(yǔ)言中如果不設(shè)置指定的時(shí)區(qū),通過(guò)time.Now()獲取到的就是本地時(shí)區(qū),下面這篇文章主要給大家介紹了關(guān)于Go中時(shí)間與時(shí)區(qū)問(wèn)題的相關(guān)資料,需要的朋友可以參考下2021-12-12一文帶你掌握掌握 Golang結(jié)構(gòu)體與方法
在 Golang 中,結(jié)構(gòu)體和方法是實(shí)現(xiàn)面向?qū)ο缶幊痰闹匾M成部分,也是 Golang 的核心概念之一。在本篇文章中,我們將深入介紹 Golang 結(jié)構(gòu)體與方法的概念、使用方法以及相關(guān)的編程技巧和最佳實(shí)踐2023-04-04Golang錯(cuò)誤處理:異常捕捉和恢復(fù)機(jī)制
Golang中,異常處理是通過(guò) defer + panic + recover 的方式來(lái)實(shí)現(xiàn)的,使用 defer 可以將清理操作注冊(cè)到函數(shù)執(zhí)行完畢后執(zhí)行,而 panic 和 recover 可以用于處理異常,通過(guò)組合使用這些功能,可以實(shí)現(xiàn)更加健壯的程序2024-01-01Go語(yǔ)言實(shí)戰(zhàn)之詳細(xì)掌握正則表達(dá)式的應(yīng)用與技巧
正則表達(dá)式是一種從左到右與主題字符串匹配的模式,正則表達(dá)式用于替換字符串中的文本,驗(yàn)證表單,基于模式匹配從字符串中提取子字符串等等,這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言實(shí)戰(zhàn)之詳細(xì)掌握正則表達(dá)式的應(yīng)用與技巧,需要的朋友可以參考下2023-12-12如何在Go中使用Casbin進(jìn)行訪問(wèn)控制
這篇文章主要介紹了如何在Go中使用Casbin進(jìn)行訪問(wèn)控制,Casbin是一個(gè)強(qiáng)大的、高效的開(kāi)源訪問(wèn)控制框架,其權(quán)限管理機(jī)制支持多種訪問(wèn)控制模型,Casbin只負(fù)責(zé)訪問(wèn)控制2022-08-08Golang語(yǔ)言學(xué)習(xí)拿捏Go反射示例教程
這篇文章主要為大家介紹了Golang語(yǔ)言中Go反射示例的教程,教你拿捏Go反射,再也不用被Go反射折磨,有需要的朋友可以共同學(xué)習(xí)參考下2021-11-11Golang中context庫(kù)的高級(jí)應(yīng)用
context庫(kù)不僅對(duì)于提升代碼的效率和性能至關(guān)重要,而且還幫助開(kāi)發(fā)者在復(fù)雜的系統(tǒng)中保持代碼的清晰和可維護(hù)性,下面我們就來(lái)看看context庫(kù)的高級(jí)應(yīng)用吧2024-01-01