真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在golang中退出進(jìn)程-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計(jì),永靖網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:永靖等地區(qū)。永靖做網(wǎng)站價(jià)格咨詢:18982081108

今天就跟大家聊聊有關(guān)如何在golang中退出進(jìn)程,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

golang退出進(jìn)程的方法:首先定義一個(gè)【chan struct{}】;然后調(diào)用【close()】函數(shù)關(guān)閉channel,將退出信號(hào)傳遞給每一個(gè)goroutine;最后取到【<-chan】的時(shí)候,退出break循環(huán)即可。

golang退出進(jìn)程的方法:

以下對(duì)讓主函數(shù)總到exit func的方案,生產(chǎn)環(huán)境里,exit func可能會(huì)做很多的關(guān)閉操作,而關(guān)閉的對(duì)象很可能是很多內(nèi)嵌無(wú)限循環(huán)的goroutine,如何把退出信號(hào)傳遞給每一個(gè)goroutine呢?

我通常的做法是定義一個(gè)chan struct{} ,當(dāng)調(diào)用close()函數(shù)關(guān)閉channel時(shí),所有的<-chan操作會(huì)同時(shí)進(jìn)行,這樣就實(shí)現(xiàn)了將退出信號(hào)傳遞給每一個(gè)goroutine,而各個(gè)goroutine都可以通過select(默認(rèn)linux下select調(diào)用的是epoll進(jìn)行輪詢)進(jìn)行輪詢,當(dāng)獲取到<-chan的時(shí)候,break循環(huán)

package main
import(
        "fmt"
        "os"
        "os/signal"
        "syscall"
)
func main(){
        signalChan := make(chan os.Signal,1) //創(chuàng)建一個(gè)信號(hào)量的chan,緩存為1,(0,1)意義不大
        signal.Notify(signalChan, syscall.SIGINT, syscall.SIGTERM)//讓進(jìn)城收集信號(hào)量。
        fmt.Println("i am workding!")
        <-signalChan         
        ExitFunc()
}
func ExitFunc(){
        fmt.Println("i am exiting!")
}

看完上述內(nèi)容,你們對(duì)如何在golang中退出進(jìn)程有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝大家的支持。


網(wǎng)站名稱:如何在golang中退出進(jìn)程-創(chuàng)新互聯(lián)
標(biāo)題來源:http://weahome.cn/article/dhgcgi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部