go基础教程

golang基础-互斥锁的使用

作者:admin 2017-10-21 我要评论( )

sync.Mutex是go并发中的一种互斥锁,能够保证数据的正确型

        Mutex的使用方法    

    Mutex是golang中的一种互斥锁,能够让代码块的零界保证数据的安全性和数据的正确型,始终只有一个goroutine执行代码,直接上代码吧,

没有实用互斥锁的情况:

package main

import (
    "fmt"
    "sync"
)
var1
wgsyncWaitGroup
mxsyncMutex
func main() {
 for i := 1; i <= 10000; i++ {
    go sum()
 }

 wg.Wait()

 fmt.Println(var1)
}
func sum() {
wgDone
    //    mx.Lock()
var1
    //    defer mx.Unlock()
}

执行  go run test.go,得到的结果如下,发现每次的值都不一样

D:/Go/bin/go.exe build -i [D:/gopath/src/sample/20171021]

成功: 进程退出代码 0.

D:/gopath/src/sample/20171021/20171021.exe  [D:/gopath/src/sample/20171021]

9995

成功: 进程退出代码 0.

使用互斥锁的情况:

package main

import (
    "fmt"
    "sync"
)
var1
wgsyncWaitGroup
mxsyncMutex
func main() {
 for i := 1; i <= 10000; i++ {
    go sum()
}

 wg.Wait()

 fmt.Println(var1)
}
func sum() {
mxLock
var1
mxUnlock
wgDone
}

发现每次执行的结果都是 1000,在sum函数中 mx.Lock()和mx.Unlock()中始终能保证中间代码的数据安全型

 

}

转载请注明出处。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Go 语言环境安装

    2017-08-25

网友点评