国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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)遵守國家法律
隆安县| 富平县| 睢宁县| 澎湖县| 红桥区| 开封市| 庆元县| 阿拉善右旗| 黑山县| 霍城县| 河源市| 金门县| 巫溪县| 晴隆县| 新田县| 武冈市| 五寨县| 兴义市| 哈巴河县| 博野县| 兴业县| 江达县| 南昌市| 峨边| 濮阳市| 大英县| 太原市| 徐闻县| 通道| 南皮县| 鹰潭市| 宁阳县| 左贡县| 水城县| 扶风县| 承德县| 沭阳县| 固始县| 腾冲县| 阿克陶县| 武乡县|