概要-04go言語の知識タイマー

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への書き込みデータであり、死者のループは共通キューの値を読み取り

公開された11元の記事 ウォンの賞賛0 ビュー86

おすすめ

転載: blog.csdn.net/weixin_42282999/article/details/104459101