golang sync atomic包基本引數

2022-08-30 19:27:06 字數 880 閱讀 1619

import (

"sync"

"sync/atomic"

"testing"

)func testatomic(t *testing.t)

for i := 0; i < 50; i++

}()} wg.wait()

//值可能不等於50,在頻繁修改的情況下cas操作可能失敗

t.log("c:", c)

/* 儲存

與讀操作對應的是寫入操作,sync/atomic也提供了與原子的值載入函式相對應的原子的值儲存函式。

這些函式的名稱均以「store」為字首。在原子的儲存某個值的過程中,

任何cpu都不會進行針對進行同乙個值的讀或寫操作

如果我們把所有針對此值的寫操作都改為原子操作,

那麼就不會出現針對此值的讀操作讀操作因被併發的進行而讀到修改了一半的情況。

原子操作總會成功,因為他不必關心被操作值的舊值是什麼。

*/ var d int32

t.log("d:", d)

//儲存操作總會成功,它不關心舊值是什麼,與cas不同

//引數一被操作的指標,引數二新的值

atomic.storeint32(&d, 555)

t.log("d:", d)

/* 交換

原子交換操作,這類函式的名稱都以「swap」為字首。

與cas不同,交換操作直接賦予新值,不管舊值。

會返回舊值

*/ var e int32

wg2 := sync.waitgroup{}

for i := 0; i < 20; i++ ()

} wg2.wait()

t.log("e:", e)

}

WiFi基本引數

分享幾個wifi的幾個核心引數 beacon interval 間隔調高有助於無線網路效能 client 端省電,間隔調低可以加快wireless client 鏈結上去速度 beacon傳送頻繁frame會比較占用無線頻寬資源 beacon 單位通常以微秒 millsecond 為單位 1 100...

陣列的基本引數

arr a,b,c,d 1.arr.shift 刪除陣列的第乙個值並且返回這個值 alert arr.shift 彈出a2.arr.unshift 1 把1插入arr的第乙個值得前面,返回的是這個陣列的長度 alert arr.unshift 1 彈出53.arr.pop 把arr中最後乙個值刪除並...

Monkey命令基本引數

monkey命令基本引數 一 monkey簡介 monkey測試是android自動化測試的一種手段。用於進行壓力測試,模擬使用者的按鍵輸入,觸屏輸入,手勢輸入等,檢視裝置多久出現異常。monkey測試的特點 隨機性,不摻雜主觀性 二 monkey路徑 monkey是安卓系統自帶的,其啟動指令碼位於...