MST

星途 面试题库

面试题:Go语言中Goroutine与Mutex的简单应用

请编写一段Go代码,创建3个Goroutine,每个Goroutine对一个共享变量进行100次累加操作。使用Mutex来确保共享变量的并发安全,最后输出共享变量的最终值。
13.9万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "sync"
)

var (
    counter int
    mu      sync.Mutex
)

func increment(wg *sync.WaitGroup) {
    defer wg.Done()
    for i := 0; i < 100; i++ {
        mu.Lock()
        counter++
        mu.Unlock()
    }
}

func main() {
    var wg sync.WaitGroup
    wg.Add(3)

    go increment(&wg)
    go increment(&wg)
    go increment(&wg)

    wg.Wait()
    fmt.Println("Final value of counter:", counter)
}