golang中的队列

golang中自带list,但自带的是并发不安全的,如果使用,必须还得自己封装!

这里说两种方式,一种是利用channel,一种是自带list+sync

channel 的方式实现比较简单,效率也比较高,缺点就是只能自定义长度的队列(简单使用,可以,非常方便)。

主要是利用channel的缓冲和阻塞实现:

 

添加队列啦;使用的时候直接

<-ch

这里的ch是全局的,一共放了10000,这个地方有优化空间,就是ch为1000的缓存,在使用了还剩下100的时候就要填充队列,这里可以自己优化,这里只是告诉一个简单的示例告诉你,channel可以用作队列,在简单使用的时候

下边看下list的封装可以并发的队列:

这里就是利用锁的机制,防止在并发的时候出先并发错误!