go中管道的理解之---管道作为函数返回值

本文探讨Go语言中管道(channel)的作用,主要用于Go程间的通信和同步。管道可以解决进程间信息传递和协调进程顺序的问题,通过管道的阻塞特性也可解决临界状态问题。无缓冲管道仅允许一个活跃Go程,有缓冲管道则可允许多个。当管道空或满时,读写操作可能导致死锁。通过示例说明,管道作为函数返回值可能导致函数所在Go程阻塞,不使用返回的通道则不会阻塞。递归和指针也被提及,作为线程间和帧间通信的手段。
摘要由CSDN通过智能技术生成

 

====描述有误,回头再修改,不要在看了==========

go语言channel的作用:同步和通信,也就是通信吧。

【管道可以实现go程之间的通信和同步,一个go去send,另外的go去receive,附带赠送功能----也可以实现桢之间的同步,一个桢receive,一个桢send,简言之:桢返回管道被使用,桢就可以活着了】

因为管道实现的是go之间的桥梁,所以,只要出现channel,就必须再来个go程。不能自己读自己写。养成习惯,写完关闭。

进程间通信的问题有三个问题:进程间信息传递+两个进程抢夺同一个资源+进程间先后顺序

传统进程间通信,效率高到低,4种方式:共享内存 (eg:锁)   共享内核(eg:消息队列) 共享文件(eg:有名管道) socket通信

go语言的chan是,属于进程通信方式的第一种,我觉得可以划分为共享内存的部分,又像是共享内存+socket的杂交,因为go是通过通信来共享内存

go语言的chan解决了进程通信问题的第一和第三个问题:就是进程间消息传递和协调进程的先后顺序,至于临界值的问题,可以利用管道的阻塞特性来协调临界状态,我觉得也可以解决第二个问题,就是解决临界状态问题。那可以说有go万事足。

如果是无缓冲管道,则管道内只能存在一个活跃进程,如果是有缓冲管道&

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值