Golang 实战

从入门到实战 Golang 编程语言

人数:125人 时长:16.8 小时 状态: 更新中...

当前视频需要购买后才能观看

¥ 399.00

不同进程间的内存是互相独立的,没办法直接互相操作对方内的数据,而共享内存则是靠操作系统提供的内存映射机制,让不同进程的一块地址空间映射到同一个虚拟内存区域上,使不同的进程可以操作到一块共用的内存块。共享内存是效率最高的进程间通讯机制,因为数据不需要在内核和程序之间复制。

使用Mutext保护数据的安全:

type safeInt struct {
    a int
    lock sync.Mutex
}

func (si *safeInt) increase() {
    si.lock.Lock()
    defer si.lock.Unlock()
    si.a++
}

func (si *safeInt) get() int {
    si.lock.Lock()
    defer si.lock.Unlock()
    return si.a
}

可以使用WaitGroup等待协程的结束:

var wg sync.WaitGroup

for i:=0;i<100000;i++ {
  wg.Add(1)
  go func() {
    defer wg.Done()
    si.increase()
  }()
}

wg.Wait()

不要通过共享内存来通信,应该通过通信来共享内存

课程:Golang 实战
作者:阳明
人数:125人
时长:16.8 小时
状态: 更新中...