Go golang原子函式鎖住共享資源

2022-09-23 19:18:10 字數 848 閱讀 5516

[go] golang原子函式鎖住共享資源

1.atomic包裡的幾個函式以及sync包裡的mutex型別,提供了解決方案

2.原子函式能夠以很底層的加鎖機制來同步訪問整型變數和指標

3.atomic.addint64(&counter, 1)的原理是強制同一時刻只能有乙個goroutine執行並完成這個加法操作

package main

import (

"fmt"

"runtime"

"sync"

"sync/atomic"

var (

//全域性變數

counter int64

//計數訊號量

wg sync.waitgroup

func main() {

fmt.println("hello")

//計數加2,等待兩個goroutine

wg.add(2)

go inccounter()

go inccounter()

//主goroutine等待子goroutine結束

wg.wait()

fmt.println("最終counter值:", counter)

//增加counter的值函式

func inccounter() {

//函式結束,減小訊號量

defer wg.done()

for count := 0; count < 2; count++ {

//安全的對counter加1

atomic.addint64(&counter, 1)

//強制排程器必須切換

runtime.gosched()

Go golang原子函式鎖住共享資源

1.atomic包裡的幾個函式以及sync包裡的mutex型別,提供了解決方案 2.原子函式能夠以很底層的加鎖機制來同步訪問整型變數和指標 3.atomic.addint64 counter,1 的原理是強制同一時刻只能有乙個goroutine執行並完成這個加法操作 package main imp...

原子操作 普通鎖 讀寫鎖

一 原子操作cas compare and swap 原子操作分三步 讀取addr的值,和old進行比較,如果相等,則將new賦值給 addr,他能保證這三步一起執行完成,叫原子操作也就是說它不能再分了,當有乙個cpu在訪問這塊內容addr時,其他cpu就不能訪問 text compareandsw...

原子操作和鎖

原子操作 在多程序 執行緒 的作業系統中不能被其它程序 執行緒 打斷的操作就叫原子操作,檔案的原子操作是指操作檔案時的不能被打斷的操作。原子操作是不可分割的,在執行過程中不會被任何其它任務或事件中斷。linux核心提供了一系列函式來實現核心中的原子操作,這些函式又分為兩類,分別針對位和整型變數進行原...