为了账号安全,请及时绑定邮箱和手机立即绑定

go语言简单入门--锁和通道

标签:
Go

数据竟态:

数据竟态发生在多个goroutine并发读写一个变量,并且至少一个goroutine在写。

造成竞态条件的根本原因是进程在进行某些操作的时候被中断。虽然在再次运行时会恢复如初,但是外界环境可能在极短时间内发生变化。

锁的分类:互斥锁和读写锁。

使用场景:在大多数goroutine都在读,少部分goroutine在写,此时使用读写锁效率高,否则使用互斥锁效率高。因为读写锁需要更复杂的内部薄记方式。

通道分类:缓冲通道make(chan type, int t)和非缓冲通道make(chan type)。非缓冲通道会阻塞程序,缓冲通道不会。

range在通道循环中有独特的用处,可以在发送通道关闭时自动退出循环。

select:select和switch类似,可以有一个一个的case和一个default。

select和switch区别是:

1、每一个case必须是一个通道。

2、如果没有default且所有case都不满足,则当前goroutine堵塞至有一个case满足为止。

3、如果多个case同时满足条件,select会随机选择一个case执行,而switch会从上到下选择最先满足条件的执行。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Web前端工程师
手记
粉丝
9109
获赞与收藏
2572

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消