當你寫的go程式在退出時做一些操作就需要捕捉訊號後進行業務處理再關閉程式但是當程式主線不止一條時,邏輯會些許複雜。一般捕捉訊號的函式只有乙個,但是退出的地方卻多了起來,退出方案必須具有拓展性與簡單性才能讓自己不再糾結於此。
一般資料都時在講捕捉訊號與退出,而例子往往只考慮單個主線退出,當你寫個命令列啟動,根據子命令執行不同主線時在方便的擴充套件性上迷了方向。
func
main()
全在main裡幹了,耦合性太強,業務需在main中按邏輯呼叫,使用讀寫無緩衝區通道會阻塞的特點
我有個命令列程式,乙個子命令啟動server,乙個子命令啟動client,兩個命令啟動的程式都需要清理退出。
var exitchan =
make
(chan
string
)var sigchan =
make
(chan os.signal)
var wt=sync.waitgroup
func
exitlisten()
func
main()
var servercmd =
&cobra.command
, short:
"啟動服務"
, long:``,
run:
func
(cmd *cobra.command, args [
]string)(
) communication.
udplisten()
communication.
online()
server:=communication.
newmessageserver()
server.
listen()
},}
此方案適用於不需要複雜精細控制子協程的場合,相較於只阻塞監聽訊號,然後處理退出的思想來說多了多主線的相容性,且簡單的做到多訊號搶占,只要乙個觸發可以退出所有。
c 結束程式 c 程式的結構
學習程式語言的最好方法是編寫程式。通常,初學者編寫的第乙個程式是乙個名為 你好世界 的程式,它只需在你的電腦螢幕上列印 你好世界 雖然很簡單,但它包含了c 程式的所有基本元件 my first program in c include int main hello world 上面的上面板顯示了這個...
VC 結束程式程序
1.使用exitprocess 結束程序 程序只是提供了一段位址空間和核心物件,其執行時通過在其位址空間內的主線程來體現的。當主線程的進入點函式返回時,程序也就隨之結束。這種程序的終止方式是程序的正常退出,程序中的所有執行緒資源都能夠得到正確的清除。除了這種程序的正常退出方式外,有時還需要在程式中通...
C C程式 函式結束
一 c 函式結束與異常處理 1 return 1.1 功能簡介 return語句用於結束當前正在執行的函式,並將控制權返回給呼叫此函式的函式。1.2 使用方法 1.2.1 不帶返回值的return語句只能用於返回型別為void的函式。1.2.2 任何返回型別不是void的函式都必須返回乙個值,而且這...