Go语言高阶:调度器系列(1)起源

2019-03-10
阅读 6 分钟
5k
如果把语言比喻为武侠小说中的武功,如果只是会用,也就是达到四五层,如果用的熟练也就六七层,如果能见招拆招也得八九层,如果你出神入化,立于不败之地十层。

总结了才知道,原来channel有这么多用法!

2019-01-21
阅读 5 分钟
48.7k
这篇文章总结了channel的10种常用操作,以一个更高的视角看待channel,会给大家带来对channel更全面的认识。 在介绍10种操作前,先简要介绍下channel的使用场景、基本操作和注意事项。 channel的使用场景 把channel用在数据流动的地方: 消息传递、消息过滤 信号广播 事件订阅与广播 请求、响应转发 任务分发 结果汇总 ...

Golang并发:除了channel,你还有其他选择

2019-01-05
阅读 6 分钟
8.5k
我们都知道Golang并发优选channel,但channel不是万能的,Golang为我们提供了另一种选择:sync。通过这篇文章,你会了解sync包最基础、最常用的方法,至于sync和channel之争留给下一篇文章。

Golang并发:一招掌握无阻塞通道读写

2018-12-27
阅读 4 分钟
27.3k
介绍Golang并发的模型写了几篇了,但一直没有以channel为主题进行介绍,今天就给大家聊一聊channel,channel的基本使用非常简单,想必大家都已了解,所以直接来个进阶点的:介绍channel的阻塞情况,以及给你一个必杀技,立马解决阻塞问题,实用性高。

Golang并发模型:select进阶

2018-12-18
阅读 2 分钟
9.8k
最近公司工作有点多,Golang的select进阶就这样被拖沓啦,今天坚持把时间挤一挤,把吹的牛皮补上。 前一篇文章《Golang并发模型:轻松入门select》介绍了select的作用和它的基本用法,这次介绍它的3个进阶特性。 nil的通道永远阻塞 如何跳出for-select select{}阻塞 nil的通道永远阻塞 当case上读一个通道时,如果这个通...

Golang并发实践:笔记本秒变暖宝宝

2018-12-13
阅读 1 分钟
2.8k
早晨来到办公室,手是非常凉啊,一模笔记本,比手还凉,手指都快不能动了。歪脑筋一动,把笔记本编程暖手宝先暖暖手吧,这不就都暖和了。怎么变呢?当然是你学的Golang并发啦。

Golang并发模型:轻松入门select

2018-12-12
阅读 2 分钟
5.8k
之前的文章都提到过,Golang的并发模型都来自生活,select也不例外。举个例子:我们都知道一句话,“吃饭睡觉打豆豆”,这一句话里包含了3件事:

Golang并发模型:轻松入门流水线FAN模式

2018-11-28
阅读 6 分钟
13.2k
前一篇文章《Golang并发模型:轻松入门流水线模型》,介绍了流水线模型的概念,这篇文章是流水线模型进阶,介绍FAN-IN和FAN-OUT,FAN模式可以让我们的流水线模型更好的利用Golang并发,提高软件性能。但FAN模式不一定是万能,不见得能提高程序的性能,甚至还不如普通的流水线。我们先介绍下FAN模式,再看看它怎么提升性...

Go并发模型:轻松入门流水线模型

2018-11-26
阅读 3 分钟
12.3k
Go作为一个实用主义的编程语言,非常注重性能,在语言特性上天然支持并发,Go并发模型有多种模式,通过流水线模型系列文章,你会更好的使用Go的并发特性,提高的程序性能。

轻松检测Golang并发的数据竞争

2018-11-15
阅读 2 分钟
9k
Golang中我们使用Channel或者sync.Mutex等锁保护数据,有没有一种机制可以检测代码中的数据竞争呢? 背景知识数据竞争是并发情况下,存在多线程/协程读写相同数据的情况,必须存在至少一方写。另外,全是读的情况下是不存在数据竞争的。 使用race检测数据竞争 go build有个标记race可以帮助检测代码中的数据竞争。 {代码...