最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

2021-02-20:手寫代碼:讀寫鎖。

2021-02-20 23:06 作者:福大大架構(gòu)師每日一題  | 我要投稿

福哥答案2021-02-20:

四大方法:讀加鎖,讀解鎖,寫加鎖,寫解鎖。讀加鎖里有寫加鎖,讀解鎖里有寫解鎖。代碼有寫線程饑餓現(xiàn)象,但實(shí)現(xiàn)簡(jiǎn)單。

代碼用golang編寫,代碼如下:

```go

package main

import (

? ? "fmt"

? ? "sync"

? ? "time"

)

func main() {

? ? fdd := FddRWMutex{}

? ? go func() {

? ? ? ? i := 0

? ? ? ? for k := 0; k < 5; k++ {

? ? ? ? ? ? go func() {

? ? ? ? ? ? ? ? j := i

? ? ? ? ? ? ? ? i++

? ? ? ? ? ? ? ? fdd.RLock()

? ? ? ? ? ? ? ? fmt.Println("讀操作", j)

? ? ? ? ? ? ? ? time.Sleep(5 * time.Second)

? ? ? ? ? ? ? ? fdd.RUnlock()

? ? ? ? ? ? }()

? ? ? ? ? ? time.Sleep(3 * time.Second)

? ? ? ? }

? ? }()

? ? time.Sleep(1000)

? ? fdd.Lock()

? ? fmt.Println("寫操作------------------------------------------")

? ? fdd.Unlock()

? ? fmt.Println("有寫線程饑餓現(xiàn)象")

}

type FddRWMutex struct {

? ? w? ? ? ? ? ?sync.Mutex

? ? r? ? ? ? ? ?sync.Mutex

? ? readerCount int

}

func (rw *FddRWMutex) RLock() {

? ? rw.r.Lock()

? ? rw.readerCount++

? ? if rw.readerCount == 1 {

? ? ? ? rw.w.Lock()

? ? }

? ? rw.r.Unlock()

}

func (rw *FddRWMutex) RUnlock() {

? ? rw.r.Lock()

? ? rw.readerCount--

? ? if rw.readerCount == 0 {

? ? ? ? rw.w.Unlock()

? ? }

? ? rw.r.Unlock()

}

func (rw *FddRWMutex) Lock() {

? ? rw.w.Lock()

}

func (rw *FddRWMutex) Unlock() {

? ? rw.w.Unlock()

}

```

執(zhí)行結(jié)果如下:

***

[評(píng)論](https://user.qzone.qq.com/3182319461/blog/1613775238)


2021-02-20:手寫代碼:讀寫鎖。的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
安乡县| 玛沁县| 分宜县| 红河县| 沾益县| 自治县| 沂水县| 怀仁县| 乌鲁木齐县| 二连浩特市| 清水河县| 平安县| 南充市| 平潭县| 正蓝旗| 三明市| 沙坪坝区| 高雄市| 郸城县| 乐东| 利川市| 中超| 宣城市| 古浪县| 旌德县| 云霄县| 凤冈县| 东光县| 禹州市| 井研县| 峨山| 白城市| 武隆县| 孟津县| 逊克县| 卢龙县| 贵港市| 宁国市| 闽侯县| 金山区| 永吉县|