濮阳杆衣贸易有限公司

主頁 > 知識庫 > Go語言實現(xiàn)互斥鎖、隨機數(shù)、time、List

Go語言實現(xiàn)互斥鎖、隨機數(shù)、time、List

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

Go語言實現(xiàn)互斥鎖、隨機數(shù)、time、List

import (
  "container/list"
  "fmt"
  "math/rand" //備注2:隨機數(shù)的包
  "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:隨機數(shù)rand.Intn(5)---> 1e9為科學計數(shù)法,1 * 10的9次方
      Info.lock.Lock()//備注1:上鎖
      Info.Name = fmt.Sprint("Name", i) //備注: Sprint采用默認格式將其參數(shù)格式化,串聯(lián)所有輸出生成并返回一個字符串。如果兩個相鄰的參數(shù)都不是字符串,會在它們的輸出之間添加空格
      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關鍵字循環(huán)時的坑
  • Go語言中http和mysql的實現(xiàn)代碼
  • go語言中int和byte轉換方式
  • Go語言中的字符串處理方法示例詳解
  • Go語言中多字節(jié)字符的處理方法詳解
  • Go語言中 Channel 詳解
  • go語言中strings包的用法匯總
  • Go語言的JSON處理詳解
  • Go語言的文件操作代碼匯總
  • Golang數(shù)組的傳遞詳解

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

巨人網絡通訊聲明:本文標題《Go語言實現(xiàn)互斥鎖、隨機數(shù)、time、List》,本文關鍵詞  語言,實現(xiàn),互斥,鎖,隨機數(shù),;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Go語言實現(xiàn)互斥鎖、隨機數(shù)、time、List》相關的同類信息!
  • 本頁收集關于Go語言實現(xiàn)互斥鎖、隨機數(shù)、time、List的相關信息資訊供網民參考!
  • 推薦文章
    东平县| 怀化市| 大埔县| 佛学| 高碑店市| 伊通| 逊克县| 福鼎市| 海城市| 肇庆市| 卢湾区| 津南区| 台中县| 梁山县| 榆中县| 濮阳县| 玉树县| 无锡市| 长葛市| 临夏市| 怀来县| 阜宁县| 卢湾区| 南宫市| 巴彦县| 介休市| 三门县| 芦溪县| 富锦市| 汉中市| 罗山县| 泰来县| 外汇| 开江县| 枣阳市| 绥化市| 盈江县| 濉溪县| 四会市| 横山县| 精河县|