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

歡迎光臨散文網(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)遵守國家法律
陈巴尔虎旗| 通化县| 吉水县| 阜南县| 万全县| 迁西县| 白水县| 湛江市| 土默特左旗| 延庆县| 且末县| 左云县| 班玛县| 宜州市| 莎车县| 济阳县| 宜兴市| 柳州市| 安丘市| 麻城市| 绥化市| 南城县| 内丘县| 凤山县| 利津县| 五家渠市| 苍梧县| 抚顺市| 岗巴县| 平果县| 天津市| 新龙县| 辽宁省| 大理市| 磐安县| 定边县| 湾仔区| 安庆市| 富平县| 威海市| 湾仔区|