亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在golang中退出進程

發布時間:2020-07-20 14:34:27 來源:億速云 閱讀:1341 作者:Leah 欄目:編程語言

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

golang退出進程的方法:首先定義一個【chan struct{}】;然后調用【close()】函數關閉channel,將退出信號傳遞給每一個goroutine;最后取到【<-chan】的時候,退出break循環即可。

golang退出進程的方法:

以下對讓主函數總到exit func的方案,生產環境里,exit func可能會做很多的關閉操作,而關閉的對象很可能是很多內嵌無限循環的goroutine,如何把退出信號傳遞給每一個goroutine呢?

我通常的做法是定義一個chan struct{} ,當調用close()函數關閉channel時,所有的<-chan操作會同時進行,這樣就實現了將退出信號傳遞給每一個goroutine,而各個goroutine都可以通過select(默認linux下select調用的是epoll進行輪詢)進行輪詢,當獲取到<-chan的時候,break循環

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


看完上述內容,你們對如何在golang中退出進程有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潜山县| 丰原市| 乡宁县| 西青区| 温州市| 永吉县| 茶陵县| 永安市| 琼中| 甘谷县| 峨眉山市| 苏州市| 万安县| 阜平县| 宜兴市| 五峰| 泗洪县| 钦州市| 楚雄市| 赣榆县| 资源县| 读书| 阿巴嘎旗| 湖口县| 桦南县| 友谊县| 丹阳市| 沂南县| 通辽市| 会泽县| 湘阴县| 霍林郭勒市| 平泉县| 孟村| 师宗县| 垦利县| 大余县| 苏尼特左旗| 朝阳县| 方山县| 博客|