五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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)遵守國家法律
临清市| 海丰县| 安阳市| 深州市| 四平市| 高淳县| 通化县| 依兰县| 玛多县| 吴旗县| 沭阳县| 徐州市| 舞钢市| 临清市| 白朗县| 增城市| 元阳县| 黄浦区| 内乡县| 汪清县| 九台市| 元江| 余姚市| 武定县| 即墨市| 洛宁县| 松滋市| 柳河县| 冷水江市| 抚松县| 阳谷县| 博白县| 桐城市| 霍邱县| 额尔古纳市| 南投县| 德州市| 沧州市| 龙山县| 嘉鱼县| 轮台县|