简简单单学golang(三)

本文探讨了Go语言中协程的特点及其实现并发编程的方法。介绍了协程相较于线程和进程的优势,如更轻量级且易于管理,并通过chan实现了协程间的通信。文章还讨论了协程调度机制、阻塞行为以及如何使用select实现非阻塞性通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

go 并发编程

解决并发问题高效
协程 比线程,进程更轻量,轻松上百万,基于线程
主线程退出,协程结束

协程间同步
chan  goroutine间的通信方式

ch := make(chan int)

ch <- c 写 
c := <-ch 读
协程里写,协程外读,可以阻塞协程外的程序块
协程里读,协程外写,可以阻塞协程内的程序块
谁读谁阻塞,谁写谁出让


缓冲chan

c := make(chan int,n)  //缓冲大小,队列满了才阻塞

select
异步非阻塞的一种方式
 

select 
case <-ch :
   fmt.Println("成功读到数据")
case ch<-1 :
   fmt.Println("成功写入数据")   
default:
   fmt.Println("default")

协程特点:
1、主动切换,让出执行权
2、发生了IO,导致执行阻塞

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值