婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Go語言實現互斥鎖、隨機數、time、List

Go語言實現互斥鎖、隨機數、time、List

熱門標簽:廣州呼叫中心外呼系統 浙江高速公路地圖標注 江西轉化率高的羿智云外呼系統 地圖標注的汽車標 南通如皋申請開通400電話 高德地圖標注口訣 西部云谷一期地圖標注 中國地圖標注省會高清 學海導航地圖標注

Go語言實現互斥鎖、隨機數、time、List

import (
  "container/list"
  "fmt"
  "math/rand" //備注2:隨機數的包
  "sync" //備注1:異步任務的包
  "time"
)

type INFO struct {
  lock sync.Mutex  //備注1:異步鎖
  Name string
  Time int64
}

var List *list.List = list.New() //備注3:初始化List變量

func main() {
  var Info INFO
  go func() {
    for i := 0; i  5; i++ {
      time.Sleep(time.Duration(1e9 * int64(rand.Intn(5))))//備注2:隨機數rand.Intn(5)---> 1e9為科學計數法,1 * 10的9次方
      Info.lock.Lock()//備注1:上鎖
      Info.Name = fmt.Sprint("Name", i) //備注: Sprint采用默認格式將其參數格式化,串聯所有輸出生成并返回一個字符串。如果兩個相鄰的參數都不是字符串,會在它們的輸出之間添加空格
      Info.Time = time.Now().Unix() + 3
      Info.lock.Unlock()//備注1:解鎖
      List.PushBack(Info)//備注3:List表達式調用
    }
  }()
  go Getgoods()
  select {}
}
func Getgoods() {
  for {
    time.Sleep(1e8)
    for List.Len() > 0 {//備注3:List對象的使用
      N, T := List.Remove(List.Front()).(INFO).name() //備注3:List對象的使用和value.(type)的妙用
      now := time.Now().Unix() //備注4:獲取當前日期轉換后的時間戳
      if T-now = 0 {
        fmt.Println(N, T, now)
        continue
      }
      time.Sleep(time.Duration((T - now) * 1e9))
      fmt.Println(N, T, now)
    }
  }
}

func (i INFO) name() (string, int64) {
  return i.Name, i.Time
}

再給大家分享一個互斥鎖的實例代碼

package main
 
import (
  "fmt"
  "runtime"
  "sync"
)
 
var (
  counter int
  wg sync.WaitGroup
  mutex sync.Mutex
)
 
func main() {
  wg.Add(2)
   
  fmt.Println("Create Goroutines")
  go incCounter(1)
  go incCounter(2)
   
  fmt.Println("Waiting To Finish")
  wg.Wait()
   
  fmt.Println("Final Counter:", counter)
}
 
func incCounter(id int) {
  defer wg.Done()
  for count := 0; count  2; count++ {
    mutex.Lock()
    {
      value := counter
      runtime.Gosched()
      value++
      counter = value
    }
    mutex.Unlock()
  }
}

您可能感興趣的文章:
  • Go語言range關鍵字循環時的坑
  • Go語言中http和mysql的實現代碼
  • go語言中int和byte轉換方式
  • Go語言中的字符串處理方法示例詳解
  • Go語言中多字節字符的處理方法詳解
  • Go語言中 Channel 詳解
  • go語言中strings包的用法匯總
  • Go語言的JSON處理詳解
  • Go語言的文件操作代碼匯總
  • Golang數組的傳遞詳解

標簽:曲靖 保定 貴州 東營 常州 德宏 許昌 吐魯番

巨人網絡通訊聲明:本文標題《Go語言實現互斥鎖、隨機數、time、List》,本文關鍵詞  語言,實現,互斥,鎖,隨機數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Go語言實現互斥鎖、隨機數、time、List》相關的同類信息!
  • 本頁收集關于Go語言實現互斥鎖、隨機數、time、List的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 文安县| 龙江县| 乌兰察布市| 鄂尔多斯市| 盐池县| 宁安市| 裕民县| 甘孜| 沛县| 资源县| 东海县| 乃东县| 祁东县| 泌阳县| 博客| 教育| 汤原县| 东方市| 法库县| 玛沁县| 恩平市| 曲阳县| 韶关市| 修水县| 根河市| 司法| 凤山县| 大名县| 金沙县| 曲松县| 大余县| 竹北市| 河西区| 盐边县| 崇仁县| 沁阳市| 扎囊县| 万山特区| 四子王旗| 鹤山市| 樟树市|