如果你才开始进入并发编程的世界,它看起来似乎势不可挡。它绝对需要非常多的关注。go
目标就在于让并发更容易。
go协程很有效的抽象了我们需要并发执行的代码。通道通过消除共享数据,帮助我们消除了一些当数据共享时导致的严重bug。这不仅仅是消除bug,但是它改变了我们如何进行并发编程。你可以认为是通过信息传递实现并发编程,而不是那些容易出错的代码。
话虽如此,我仍然在广泛使用sync
和sync/atomic
包中的同步原语。我觉得比较重要的是通过使用这2中方式比较舒适。我支持你首先关注通道,但是当你遇到一些需要短暂的锁的简单例子时,你也可以考虑下使用互斥锁或者读写锁。