TypechoJoeTheme

Dcr163的博客

统计

golang读写互斥锁笔记

2021-11-28
/
0 评论
/
1,217 阅读
/
正在检测是否收录...
11/28

golang读写互斥锁笔记

//读写锁笔记
package main

import (
    "fmt"
    "sync"
    "time"
)

var (
    x      = 0
    rwlock sync.RWMutex
    wg     sync.WaitGroup
)

func main() {
    //开始时间
    stime := time.Now()
    //
    for i := 0; i < 5; i++ {
        wg.Add(1) //因为写操作需要等待,所以这里会花费 5*模拟写操作需要1s 的时间
        go write()
    }

    for i := 0; i < 1000; i++ {
        wg.Add(1)
        go read() //因为读操作不需要等待,所以1000次,花费的时间也是第一次读取的时间
    }
    wg.Wait()
    //结束时间
    etime := time.Now()
    fmt.Println("值为:", x)                  //值为: 5
    fmt.Println("总共花费:", etime.Sub(stime)) //总共花费: 6s

}

//写操作
func write() {
    rwlock.Lock()
    x++
    time.Sleep(time.Second) //模拟写操作需要1s
    rwlock.Unlock()
    wg.Done()
}

//读操作
func read() {
    rwlock.RLock()
    time.Sleep(1000 * time.Millisecond) // //模拟写操作需要2ms
    rwlock.RUnlock()
    wg.Done()
}

go
朗读
赞(0)
版权属于:

Dcr163的博客

本文链接:

https://www.dcr163.cn/594.html(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. William Tardent
    2024-02-27
  2. Maryann Hamer
    2024-02-27
  3. Sanora Pantano
    2024-02-24
  4. aa
    2024-02-21
  5. Kassie Baum
    2024-01-28

标签云