<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Go 原子計數器 Go里面的管理協程狀態的主要機制就是通道通訊。這些我們上面的例子介紹過。這里還有一些管理狀態的機制,下面我們看看多協程原子訪問計數器的例子,這個功能是由sync/atomic包提供的函數來實現的。 ```go package main import "fmt" import "time" import "sync/atomic" import "runtime" func main() { // 我們使用一個無符號整型來代表一個永遠為正整數的counter var ops uint64 = 0 // 為了模擬并行更新,我們使用50個協程來每隔1毫秒來 // 增加一下counter值,注意這里的50協程里面的for循環, // 也就是說如果主協程不退出,這些協程將永遠運行下去 // 所以這個程序每次輸出的值有可能不一樣 for i := 0; i < 50; i++ { go func() { for { // 為了能夠保證counter值增加的原子性,我們使用 // atomic包中的AddUint64方法,將counter的地址和 // 需要增加的值傳遞給函數即可 atomic.AddUint64(&ops, 1) // 允許其他的協程來處理 runtime.Gosched() } }() } //等待1秒中,讓協程有時間運行一段時間 time.Sleep(time.Second) // 為了能夠在counter仍被其他協程更新值的同時安全訪問counter值, // 我們獲取一個當前counter值的拷貝,這里就是opsFinal,需要把 // ops的地址傳遞給函數`LoadUint64` opsFinal := atomic.LoadUint64(&ops) fmt.Println("ops:", opsFinal) } ``` 我們多運行幾次,結果如下: ``` ops: 7499289 ops: 7700843 ops: 7342417 ```
                  <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>

                              哎呀哎呀视频在线观看