TODO:Go语言goroutine和channel使用
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
TODO:Go語言goroutine和channel使用
goroutine是Go語言中的輕量級(jí)線程實(shí)現(xiàn),由Go語言運(yùn)行時(shí)(runtime)管理。使用的時(shí)候在函數(shù)前面加“go”這個(gè)單詞作為關(guān)鍵詞,也是與普通函數(shù)的區(qū)別了。在函數(shù)前面加go關(guān)鍵字就可以創(chuàng)建一個(gè)新的goroutine進(jìn)行并發(fā)執(zhí)行。
go hello()
channel是Go語言提供的goroutine間的通信方式,我們可以使用channel在兩個(gè)或多個(gè)goroutine之家傳遞消息。channel使用的關(guān)鍵字是用“chan”,聲明一個(gè)傳遞類型為int的channel:
var ch chan int
下面小編舉一個(gè)例子,監(jiān)聽進(jìn)程被關(guān)閉后觸發(fā)的事件。
監(jiān)聽信號(hào),使用
signal.Notify(c, os.Interrupt)
第一個(gè)參數(shù)表示接收信號(hào)的channel
第二個(gè)及后面的參數(shù)表示設(shè)置要監(jiān)聽的信號(hào),如果不設(shè)置表示監(jiān)聽所有的信號(hào)。
完整例子如下,本例在Ubuntu14.04的服務(wù)版測(cè)試通過。
Ctrl+c的效果如圖:
Kill進(jìn)程的效果如圖
簡單的例子,希望對(duì)您有幫助。
wxgzh:ludong86
轉(zhuǎn)載于:https://my.oschina.net/todosomeone/blog/792525
總結(jié)
以上是生活随笔為你收集整理的TODO:Go语言goroutine和channel使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。