佳木斯湛栽影视文化发展公司

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

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

熱門標簽:AI電銷 服務外包 呼叫中心市場需求 Linux服務器 鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 地方門戶網(wǎng)站 百度競價排名

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表達式調(diào)用
    }
  }()
  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:獲取當前日期轉(zhuǎn)換后的時間戳
      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關(guān)鍵字循環(huán)時的坑
  • Go語言中http和mysql的實現(xiàn)代碼
  • go語言中int和byte轉(zhuǎn)換方式
  • Go語言中的字符串處理方法示例詳解
  • Go語言中多字節(jié)字符的處理方法詳解
  • Go語言中 Channel 詳解
  • go語言中strings包的用法匯總
  • Go語言的JSON處理詳解
  • Go語言的文件操作代碼匯總
  • Golang數(shù)組的傳遞詳解

標簽:蘭州 崇左 銅川 湖南 衡水 湘潭 黃山 仙桃

巨人網(wǎng)絡通訊聲明:本文標題《Go語言實現(xiàn)互斥鎖、隨機數(shù)、time、List》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    犍为县| 莆田市| 万荣县| 留坝县| 洛南县| 东源县| 嘉荫县| 和硕县| 宝坻区| 顺义区| 龙山县| 宜川县| 云浮市| 微山县| 葵青区| 凤凰县| 徐闻县| 定边县| 大方县| 蓝田县| 遵义县| 丹凤县| 徐闻县| 建始县| 通江县| 高雄市| 兴业县| 台州市| 启东市| 比如县| 安龙县| 灵台县| 保德县| 拉孜县| 遵义市| 杨浦区| 富蕴县| 淮南市| 兴城市| 河南省| 江孜县|