go语言协程认识-1

//关于go语言协程通道的使用
//1.通道可以带缓存,也可以不带
//2.不带缓存的,不管是读还是写都会阻塞
//3.带缓存的,如果缓存溢出,就会阻塞
//4.make(chan int,1)和make(chan int)是不一样的,第一种通道内写入两个数据会阻塞,第二种写入就会阻塞
//5.如果协程在阻塞,但是主程已经退出执行,则认为程序死锁
//6.如果程序除了主程之外(没有一个协程),处于阻塞状态,则认为程序死锁
//7.一句话:只有一个协程(可以是主程),在阻塞,认为程序处于死锁
//8.子程序是协程的一种特例,阻塞到子程序执行完毕返回,而协程可能等不到执行完毕就返回,然后条件满足再回来执行
package main
import (
	"fmt"
)

func main()  {
	//make(chan string,1)和make(chan string)是不一样的
	//make(chan string,1)中通道的buffer是1
	//这里如果写成make(chan string)会导致阻塞,死锁,因为没有缓存的通道,不管是读还是写都会阻塞
	//两个解决方案,将push数据移动到写成中(使用go语句),或增加缓存,
	//缓存没有达到上限,就不会出现死锁的情况
	chan1 := make(chan string,1)
	func() {
		fmt.Printf("在协程中,Push数据到通道\n");
		chan1 <- "GO吧"
	}()

	fmt.Printf("从通道中读取到的数据:%v", <- chan1)
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值