1は、移動チャンネル
チャンネルはゴルーチンGolang間の通信は、言語レベルで提供され、使用が容易とUnixのパイプよりも移植されています。
あなたは、クロスプロセス通信が必要な場合は、プロセス間通信ゴルーチンのための主要なチャネル、解決するための分散システムの推奨方法。
注:チャンネルはパブリックキューとして見ることができる、あなたはまた、パブリックキューとして使用することができます
例えば:
var MainChannel = make(chan FuncCallInfo)
FuncCallInfo为队列类型,MainChannel为队列名
注:在go语言中make用于申请空间相当于malloc
MainChannel <- funcCaller
将变量funcCaller写入队列
for funcs := range plainObject.MainChannel {}
循环读取队列中的值
<- funcCaller
读取队首的值
2、タイマーソース
type Timer struct {
C <-chan Time
r runtimeTimer
}
図3に示すように、タイミングコード解析
func Timer() {
tick1 := time.NewTicker(1 * time.Minute)
tick2 := time.NewTicker(30 * time.Minute)
for {
select {
case <-tick1.C:
fmt.Println("获取重启结果.........")
status := "ok"
if status == "running" {
fmt.Println("重启成功,通知")
return
}
if status == "error" {
fmt.Println("重启失败,通知")
return
}
fmt.Println("未获取到继续获取")
break
case <-tick2.C:
fmt.Println("获取重启结果超时,发送邮件通知管理员")
return
}
}
}
//time.NewTicker()関数は、キュー間隔タイマー.Cへの書き込みデータであり、死者のループは共通キューの値を読み取り