关于golang读写锁


当前第2页 返回上一页

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

package main

 

import (    "fmt"

    "sync"

    "time")var gRWLock *sync.RWMutexvar gVar intfunc init() {

    gRWLock = new(sync.RWMutex)

    gVar = 1}

 

func main() {    var wg sync.WaitGroup

    go Read(1, &wg)

    wg.Add(1)

    go Write(1, &wg)

    wg.Add(1)

    go Read(2, &wg)

    wg.Add(1)

    go Read(3, &wg)

    wg.Add(1)

 

    wg.Wait()

}

 

func Read(id int, wg *sync.WaitGroup) {

    fmt.Printf("Read Coroutine: %d start\n", id)

    defer fmt.Printf("Read Coroutine: %d end\n", id)

    gRWLock.RLock()

    fmt.Printf("gVar %d\n", gVar)

    time.Sleep(time.Second)

    gRWLock.RUnlock()

 

    wg.Done()

 

}

 

func Write(id int, wg *sync.WaitGroup) {

    fmt.Printf("Write Coroutine: %d start\n", id)

    defer fmt.Printf("Write Coroutine: %d end\n", id)

    gRWLock.Lock()

    gVar = gVar + 100

    fmt.Printf("gVar %d\n", gVar)

    time.Sleep(time.Second)

    gRWLock.Unlock()

    wg.Done()

 

}

以上就是关于golang读写锁的详细内容,更多文章请关注木庄网络博客!!

返回前面的内容

相关阅读 >>

聊聊gost的countwatch

golang cap是什么意思

分布式任务 + 消息队列框架 go-queue

23 golang中的接口(三)

golang如何调试

golang环境怎么安装

go语言proto使用入门

解决go语言安装air框架时遇到go: inconsistent vendoring问题

02 - 【go语言学习笔记】变量和常量

详解golang.org/x一键安装脚本

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...