本篇文章給大家分享的是有關(guān)使用Go語言怎么實現(xiàn)互斥鎖和隨機(jī)數(shù),小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個不僅審美在線,而且實用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對網(wǎng)站設(shè)計制作、成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。
Go語言實現(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é)計數(shù)法,1 * 10的9次方 Info.lock.Lock()//備注1:上鎖 Info.Name = fmt.Sprint("Name", i) //備注: Sprint采用默認(rèn)格式將其參數(shù)格式化,串聯(lián)所有輸出生成并返回一個字符串。如果兩個相鄰的參數(shù)都不是字符串,會在它們的輸出之間添加空格 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對象的使用 N, T := List.Remove(List.Front()).(INFO).name() //備注3:List對象的使用和value.(type)的妙用 now := time.Now().Unix() //備注4:獲取當(dāng)前日期轉(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語言怎么實現(xiàn)互斥鎖和隨機(jī)數(shù),小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前名稱:使用Go語言怎么實現(xiàn)互斥鎖和隨機(jī)數(shù)
網(wǎng)頁網(wǎng)址:http://jinyejixie.com/article2/peococ.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、做網(wǎng)站、用戶體驗、網(wǎng)站內(nèi)鏈、、品牌網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)