Go的多线程

sync.Cond

用于协程的挂起和唤醒。sync.Cond基于互斥锁/读写锁,互斥锁sync.Mutex通常用来保护临界区和共享资源,条件变量sync.Cond用来协调想要访问共享资源的goroutine。sync.Cond通常用在多个goroutine等待,一个goroutine通知的场景。如果是一个等待,一个通知,使用互斥锁或channel就可以解决了。

Wait(): 释放锁,并挂起调用者所在的goroutine,阻塞,等待其它协程调用 Signal 或 Broadcast 来唤醒;当其他协程唤醒了该协程, Wait 方法会在结束阻塞时重新加锁,然后继续执行 Wait 后面的代码。

Signal() / BroadCast(): 唤醒等待的 goroutine。

Communicating Sequential Process

使用goroutine(一种运行在用户态的协程)和在goroutine之间收发消息的channel实现了高效并发

Reference

sync.Cond

猜你喜欢

转载自blog.csdn.net/qq_34276652/article/details/119562606