執行完直接結束
1func routine1()
45 func testroutine1(t *testing.t)
等待協程執行完成後結束
1 func routine2(wg *sync.waitgroup)67 func testroutine2(t *testing.t)
傳送chan資訊結束協程執行
1 func routine3(stop chan bool) 11}12
}1314 func testroutine3(t *testing.t)
關閉chan通知協程結束執行
1 func routine4(info chan int) 9 fmt.println("
routine recv info ..
" +strconv.itoa(info))
10default
:11 fmt.println("
goroutine running ...")
12 time.sleep(2 *time.second)13}
14}15}
1617 func testroutine4(t *testing.t)
通過context通知協程結束
1func routine5(ctx context.context) 11}
12}1314 func testroutine5(t *testing.t)
參考:4.9 理解 go 語言中的 context
如何優雅的控制goroutine的數量
1,為什麼要控制goroutine的數量?goroutine固然好,但是數量太多了,往往會帶來很多麻煩,比如耗盡系統資源導致程式崩潰,或者cpu使用率過高導致系統忙不過來。比如 1 for i 0 i 10000 i 2,用什麼方法控制goroutine的數量?要在每一次執行go之前判斷gorout...
Go程式設計技巧 Goroutine的優雅控制
原文 go程式設計技巧 goroutine的優雅控制 goroutine是go語言最重要的機制,goroutine將複雜的需要非同步的io呼叫抽象成同步呼叫,符合人類正常的順序思維,極大的簡化了io程式設計的難度。如同執行緒一樣,對goroutine既要掌握基本的用法,更要很好的控制goroutin...
C 如何優雅的結束乙個執行緒
有乙個無線迴圈的執行緒需要時時接收資料,如下 class eventclass event recedatasdone?invoke this,eventargs.empty public void stoprecedatas class program ec.startrecedatas syst...