美文网首页
原子类与原子操作 2022-05-05

原子类与原子操作 2022-05-05

作者: 9_SooHyun | 来源:发表于2022-05-05 17:15 被阅读0次

    go变量原子操作最简单的方式就是给变量配一把锁,然后在操作这个变量的方法中都加锁放锁

    如【原子int】:

    type atomicInt struct {
       value int
       lock  sync.Mutex
    }
    
    package main
    
    import (
       "fmt"
       "sync"
       "time"
    )
    
    type atomicInt struct {
       value int
       lock  sync.Mutex
    }
    
    func (a *atomicInt) increase() {
       a.lock.Lock()
       defer a.lock.Unlock()
       a.value++
    
    }
    
    func (a *atomicInt) get() int {
       a.lock.Lock()
       defer a.lock.Unlock()
       return a.value
    }
    
    func main() {
       var a atomicInt
       for i:=0;i<10000;i++ {
          go func() {
            a.increase()
          }()
       }
       time.Sleep(time.Millisecond)
       fmt.Println(a.get())   // 总是10000,有锁都是串行的
    }
    

    相关文章

      网友评论

          本文标题:原子类与原子操作 2022-05-05

          本文链接:https://www.haomeiwen.com/subject/enhoyrtx.html