go中的channel是比条件变量更高阶的同步原语。
一个进程内的资源是共享的,进程内执行体之间的协同包含执行体的互斥,通过互斥锁和读写锁实现,包含执行体之间的同步,同步就是同时进行,通过waitgroup和条件变量实现,还包括执行体之间的通讯,通过channel实现。其实还有一个原子操作,是cpu实现额,和os无关,我看go的锁内部归根是用原子实现的,那么说,锁的本质是原子操作喽。
我认为所谓的执行体之间的互斥啦,同步啦,通信了,归根都是执行体之间的通信,通信都是靠一个公共区,互斥锁,条件变量