91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

Go語言讀寫鎖能用于并發嗎

小樊
82
2024-11-02 16:18:29
欄目: 編程語言

是的,Go語言的讀寫鎖(sync.RWMutex)可以用于并發場景。它允許多個讀操作同時進行,但在寫操作進行時,會阻止其他讀寫操作。這種鎖適用于讀操作遠多于寫操作的場景,可以提高程序的性能。

以下是一個簡單的示例,展示了如何使用sync.RWMutex來保護共享資源:

package main

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

type Data struct {
	value int
	mu    sync.RWMutex
}

func (d *Data) Read() int {
	d.mu.RLock()
	defer d.mu.RUnlock()
	return d.value
}

func (d *Data) Write(value int) {
	d.mu.Lock()
	defer d.mu.Unlock()
	d.value = value
}

func main() {
	data := Data{value: 0}
	var wg sync.WaitGroup

	// 啟動多個讀操作
	for i := 0; i < 10; i++ {
		wg.Add(1)
		go func() {
			defer wg.Done()
			fmt.Println("Read:", data.Read())
		}()
	}

	// 啟動一個寫操作
	wg.Add(1)
	go func() {
		defer wg.Done()
		data.Write(42)
	}()

	// 等待所有操作完成
	wg.Wait()
}

在這個示例中,我們創建了一個Data結構體,它包含一個整數值和一個讀寫鎖。Read方法用于讀取值,Write方法用于設置值。在main函數中,我們啟動了多個讀操作和一個寫操作,它們可以并發執行。

0
岑溪市| 合江县| 固镇县| 克什克腾旗| 梁山县| 兴宁市| 宿松县| 沽源县| 会泽县| 保康县| 西吉县| 吴川市| 宽城| 海宁市| 涿州市| 泗洪县| 白银市| 黄石市| 聂荣县| 太原市| 云和县| 北流市| 衡阳县| 宾阳县| 青岛市| 莱阳市| 颍上县| 潢川县| 南昌市| 八宿县| 中方县| 平泉县| 九龙县| 界首市| 绥德县| 普宁市| 安泽县| 东莞市| 郎溪县| 郁南县| 乃东县|