Go实现多线程的两种模式

在Go中,多线程一般有两种处理模式:
1、申明一个channel,并发产生的业务放入channel中,启动一个或者多个goroutin读取channel中的数据并处理。实现方法可参考之前的文章《Go实现线程池》
http://mp.weixin.qq.com/s?__biz=MzA4MzI2NTU4NA==&mid=204737034&idx=1&sn=5409b885d31a3e374fe9a0d1b8d5e607#rd

2、每一个新的请求,都启动一个新的goroutine来处理,处理结束后关闭goroutine。

对于一般业务,用两种模式都差不多。主要区别在于:
第一种模式请求不一定是实时响应的,如果处理的逻辑中有阻塞,当所有goroutine都被阻塞时,系统运行就出问题了。
第二种模式每个goroutine都是独立的,互不影响,而且实时响应。但是频繁的新建和销毁goroutine会有性能损耗,不过go语言中goroutine是很轻量级的,这并不会带来太大的问题。

Go实现多线程的两种模式》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注