教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Go语言,channel,定时器,select

Go语言,channel,定时器,select

发布时间:2022-01-24   编辑:jiaochengji.com
教程集为您提供Go语言,channel,定时器,select等资源,欢迎您收藏本站,我们将为您提供最新的Go语言,channel,定时器,select资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg><h2>Channel</h2> <h3>CSP通讯顺序同步机制:</h3>

当程序获取到cpu轮片后,执行程序,Goroutine进入挂起态时并不会放弃cpu使用权,而是将cpu使用权交给其他Goroutine。CPU内容执行时间轮片速度慢,效率低。而在Goroutine内部交换使用权能极大的提升切换效率。

<h3>
channel管道及特性:</h3> <blockquote>

1、channel内的数据只能单向流动
2、管道中的数据只能读一次,一旦读走就消失,不能重复读取。
3、数据在管道中正确流动,要求读、写两端必须同时在线。

</blockquote> <h3>
无缓冲channel:</h3> <blockquote>

没有缓冲区 —— 不能存储任何数据,必须两端同时在线。否则阻塞,直到对端在线。

</blockquote> <h3>
有缓存channel:</h3> <blockquote>

自带缓冲区 —— channel可以根据缓冲区大小,存储适量的数据。

</blockquote> <h3>
定时器:</h3> <blockquote>

time包下ticker对象

NewTicker创建ticker对象,并设置时长。

等待指定时长,循环网ticker.C中写入时间戳

可以实现定时器效果

</blockquote> <h3>
select:</h3> <blockquote>

类似witch
1、case分支中必须是一个IO操作:

2、当case分支不满足监听条件,阻塞当前case分支

3、如果同时有多个case分支满足,select随机选定一个执行(select底层实现,case对应一个Goroutine),

4、一次select监听,只能执行一个case分支,未执行的分支将被丢弃。通常将select放于for循环中。

5、default在所有case均不满足时,默认执行的分组,为了防止忙轮询,通常将for中select中的default省略。

**【结论】**使用select的Goroutine,与其他Goroutine间才用异步通信。

</blockquote> 到此这篇关于“Go语言,channel,定时器,select”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
go语言并发编程
图解 Go 并发编程
浅谈 Go 语言 select 的实现原理
Go并发编程——channel
【文末有惊喜!】一文读懂golang channel
Go语言,channel,定时器,select
Golang 并发机制
GoLang之协程
22Go常见的并发模式和并发模型
go 语言并发

[关闭]
~ ~