欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年10月07日 11:03:08   作者:ck_god  
這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)互斥鎖、隨機(jī)數(shù)、time、List的相關(guān)資料,需要的朋友可以參考下

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

import (
  "container/list"
  "fmt"
  "math/rand" //備注2:隨機(jī)數(shù)的包
  "sync" //備注1:異步任務(wù)的包
  "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:隨機(jī)數(shù)rand.Intn(5)<---> 1e9為科學(xué)計(jì)數(shù)法,1 * 10的9次方
      Info.lock.Lock()//備注1:上鎖
      Info.Name = fmt.Sprint("Name", i) //備注: Sprint采用默認(rèn)格式將其參數(shù)格式化,串聯(lián)所有輸出生成并返回一個(gè)字符串。如果兩個(gè)相鄰的參數(shù)都不是字符串,會(huì)在它們的輸出之間添加空格
      Info.Time = time.Now().Unix() + 3
      Info.lock.Unlock()//備注1:解鎖
      List.PushBack(Info)//備注3:List表達(dá)式調(diào)用
    }
  }()
  go Getgoods()
  select {}
}
func Getgoods() {
  for {
    time.Sleep(1e8)
    for List.Len() > 0 {//備注3:List對(duì)象的使用
      N, T := List.Remove(List.Front()).(INFO).name() //備注3:List對(duì)象的使用和value.(type)的妙用
      now := time.Now().Unix() //備注4:獲取當(dāng)前日期轉(zhuǎn)換后的時(shí)間戳
      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
}

再給大家分享一個(gè)互斥鎖的實(shí)例代碼

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()
  }
}

相關(guān)文章

  • Golang使用lua腳本實(shí)現(xiàn)redis原子操作

    Golang使用lua腳本實(shí)現(xiàn)redis原子操作

    這篇文章主要介紹了Golang使用lua腳本實(shí)現(xiàn)redis原子操作,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 詳解golang RWMutex讀寫(xiě)互斥鎖源碼分析

    詳解golang RWMutex讀寫(xiě)互斥鎖源碼分析

    這篇文章主要介紹了詳解golang RWMutex讀寫(xiě)互斥鎖源碼分析,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • 詳解golang 定時(shí)任務(wù)time.Sleep和time.Tick實(shí)現(xiàn)結(jié)果比較

    詳解golang 定時(shí)任務(wù)time.Sleep和time.Tick實(shí)現(xiàn)結(jié)果比較

    本文主要介紹了golang 定時(shí)任務(wù)time.Sleep和time.Tick實(shí)現(xiàn)結(jié)果比較,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Golang學(xué)習(xí)筆記(一):簡(jiǎn)介

    Golang學(xué)習(xí)筆記(一):簡(jiǎn)介

    這篇文章主要介紹了Golang學(xué)習(xí)筆記(一):簡(jiǎn)介,本文講解了Go語(yǔ)言最主要的特性、安裝、環(huán)境變量設(shè)置、整體目錄結(jié)構(gòu)、Helloworld、go命令、調(diào)試、編輯器設(shè)置等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • Golang使用Gin創(chuàng)建Restful API的實(shí)現(xiàn)

    Golang使用Gin創(chuàng)建Restful API的實(shí)現(xiàn)

    本文主要介紹了Golang使用Gin創(chuàng)建Restful API的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 詳解Go語(yǔ)言中如何高效遍歷目錄

    詳解Go語(yǔ)言中如何高效遍歷目錄

    目錄遍歷是一個(gè)很常見(jiàn)的操作,它的使用場(chǎng)景有如文件目錄查看、文件系統(tǒng)清理、日志分析、項(xiàng)目構(gòu)建等,本文將詳細(xì)介紹在Go中幾種遍歷目錄文件的方法,需要的可以參考下
    2024-02-02
  • Go語(yǔ)言實(shí)現(xiàn)JSON解析的神器詳解

    Go語(yǔ)言實(shí)現(xiàn)JSON解析的神器詳解

    php轉(zhuǎn)go是大趨勢(shì),越來(lái)越多公司的php服務(wù)都在用go進(jìn)行重構(gòu),重構(gòu)過(guò)程中,會(huì)發(fā)現(xiàn)php的json解析操作是真的香。本文和大家分享了一個(gè)Go語(yǔ)言實(shí)現(xiàn)JSON解析的神器,希望對(duì)大家有所幫助
    2023-01-01
  • go語(yǔ)言調(diào)用c語(yǔ)言的so動(dòng)態(tài)庫(kù)的實(shí)現(xiàn)

    go語(yǔ)言調(diào)用c語(yǔ)言的so動(dòng)態(tài)庫(kù)的實(shí)現(xiàn)

    在Go語(yǔ)言開(kāi)發(fā)過(guò)程中,有時(shí)需要調(diào)用C或C++編寫(xiě)的so動(dòng)態(tài)庫(kù),本文介紹了如何在Go語(yǔ)言中調(diào)用so庫(kù)的步驟和注意事項(xiàng),包括環(huán)境準(zhǔn)備、編譯生成.so文件、Go文件編寫(xiě)、以及可能遇到的問(wèn)題和解決方法,感興趣的可以了解一下
    2024-10-10
  • 一文詳解Golang中consul的基本使用

    一文詳解Golang中consul的基本使用

    consul是一個(gè)開(kāi)源服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)的中心,可以用于微服務(wù)的注冊(cè)和服務(wù)之間的調(diào)用的發(fā)現(xiàn),幫助上游服務(wù)找到下游服務(wù)的具體ip:port或者是domain,也可以使用dns的方式讓consul幫你去做轉(zhuǎn)發(fā)。本文就來(lái)講講它的具體使用吧
    2023-03-03
  • golang語(yǔ)言中for循環(huán)語(yǔ)句用法實(shí)例

    golang語(yǔ)言中for循環(huán)語(yǔ)句用法實(shí)例

    這篇文章主要介紹了golang語(yǔ)言中for循環(huán)語(yǔ)句用法,實(shí)例分析了for循環(huán)遍歷的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01

最新評(píng)論