<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                sync/atomic 庫提供了原子操作的支持,原子操作直接有底層CPU硬件支持,因而一般要比基于操作系統API的鎖方式效率高些。本文對 sync/atomic 中的基本操作進行一個簡單的介紹。 原子增、減值 用于對變量值進行原子增操作,并返回增加后的值。 第一個參數值必須是一個指針類型的值,以便施加特殊的CPU指令。 第二個參數值的類型和第一個被操作值的類型總是相同的。 ~~~ package main import( "fmt" "sync" "sync/atomic" ) func main(){ var sum uint32 = 100 // var sum int32 = 100 var wg sync.WaitGroup for i := 0; i < 50; i++ { wg.Add(1) go func() { defer wg.Done() //sum += 1 //1 atomic.AddUint32(&sum, 1) //2 // atomic.AddInt32(&sum, -1) //2 }() } wg.Wait() fmt.Println(sum) } ~~~ 結果比較: ~~~ 通過對比//1與//2的結果,可以很清楚的看到原子操作起到的作用。 使用//1時,可以看到sum的值是不定的,取決于sum的同步訪問情況; 使用//2時,結果是確定而且正確的,同一時間只有一個goroutine修改sum。 ~~~ 函數原型: ~~~ atomic.AddUint32(addr *uint32, delta uint32) uint32 atomic.AddUint64(addr *uint64, delta uint64) uint64 atomic.AddInt32(addr *int32, delta int32) int32 atomic.AddInt64(addr *int64, delta int64) int64 atomic.AddUintptr(addr *uintptr, delta uintptr) uintptr ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看