====描述有误,回头再修改,不要在看了==========
go语言channel的作用:同步和通信,也就是通信吧。
【管道可以实现go程之间的通信和同步,一个go去send,另外的go去receive,附带赠送功能----也可以实现桢之间的同步,一个桢receive,一个桢send,简言之:桢返回管道被使用,桢就可以活着了】
因为管道实现的是go之间的桥梁,所以,只要出现channel,就必须再来个go程。不能自己读自己写。养成习惯,写完关闭。
进程间通信的问题有三个问题:进程间信息传递+两个进程抢夺同一个资源+进程间先后顺序
传统进程间通信,效率高到低,4种方式:共享内存 (eg:锁) 共享内核(eg:消息队列) 共享文件(eg:有名管道) socket通信
go语言的chan是,属于进程通信方式的第一种,我觉得可以划分为共享内存的部分,又像是共享内存+socket的杂交,因为go是通过通信来共享内存;
go语言的chan解决了进程通信问题的第一和第三个问题:就是进程间消息传递和协调进程的先后顺序,至于临界值的问题,可以利用管道的阻塞特性来协调临界状态,我觉得也可以解决第二个问题,就是解决临界状态问题。那可以说有go万事足。
如果是无缓冲管道,则管道内只能存在一个活跃进程,如果是有缓冲管道&