计算机编程基础_(提升)操作系统
同步
线程同步
互斥量(互斥锁)

自旋锁
读写锁

条件变量
线程同步方法对比

进程同步
共享内存



Unix域套接字
使用fork系统调用
最后更新于






最后更新于
package main
import (
"fmt"
"sync"
)
func main() {
//num: -413523
//num: 0
noMutex()
fmt.Println("num: ", num1)
withMutex()
fmt.Println("num: ", num2)
}
var (
num1 int
num2 int
cnt = 1024 * 1024 * 8
wg sync.WaitGroup
lock sync.Mutex
)
func noMutex() {
wg.Add(1)
go add()
wg.Add(1)
go sub()
wg.Wait()
}
func add() {
for i := 0; i < cnt; i++ {
num1++
}
wg.Done()
}
func sub() {
for i := 0; i < cnt; i++ {
num1--
}
wg.Done()
}
func withMutex() {
wg.Add(1)
go add2()
wg.Add(1)
go sub2()
wg.Wait()
}
func add2() {
lock.Lock()
defer func() {
lock.Unlock()
wg.Done()
}()
for i := 0; i < cnt; i++ {
num2++
}
}
func sub2() {
lock.Lock()
defer func() {
lock.Unlock()
wg.Done()
}()
for i := 0; i < cnt; i++ {
num2--
}
}