MST

星途 面试题库

面试题:Go并发环境下如何通过互斥锁解决资源竞争问题

在Go语言并发编程中,假设存在多个goroutine同时访问和修改一个共享的整数变量。请使用互斥锁(`sync.Mutex`)来实现对该共享变量的安全访问,编写一个完整的Go程序展示具体实现过程。
33.7万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "sync"
)

var (
    sharedVar int
    mu        sync.Mutex
)

func increment(wg *sync.WaitGroup) {
    defer wg.Done()
    mu.Lock()
    sharedVar++
    mu.Unlock()
}

func main() {
    var wg sync.WaitGroup
    numGoroutines := 10

    for i := 0; i < numGoroutines; i++ {
        wg.Add(1)
        go increment(&wg)
    }

    wg.Wait()
    fmt.Printf("Final value of shared variable: %d\n", sharedVar)
}