校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 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的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 泽普县| 河池市| 定南县| 探索| 基隆市| 宝鸡市| 红桥区| 会东县| 江北区| 凤城市| 邵武市| 汶上县| 大厂| 靖西县| 井研县| 肥城市| 万宁市| 昌吉市| 澎湖县| 兰溪市| 恩施市| 阳高县| 宁武县| 阳谷县| 盐城市| 新宁县| 宁陕县| 仁化县| 巴中市| 黄浦区| 东城区| 金阳县| 普洱| 永修县| 伽师县| 霸州市| 和龙市| 承德市| 额敏县| 时尚| SHOW|