yireyun/go-queue

加了一些注释和小改动

Opened this issue · 1 comments

你好,根据你的实现,我加了一些注释和小改动
https://github.com/bighunter513/goqueue

欢迎指正

我看了您的代码,其中有一点不同意见。比如原来 put 在无数据的时候会让出,“ posNext == putID && getID == putID ” 条件的 else 中的 runtime.Gosched() ,而您修改成在一定程度上等待后,进行抛弃一条旧数据。看起来是缓和了协程的等待,但是获取锁和写入操作是两部分,您自己也说了“// 存线程的竞争过多,而队列cap过小,前面的如果写数据动作比较慢,而后来的进程已经lock到这个位置的下一轮了”,用get 抛弃一条,这里,两次put写入和get 并不能保证原子性,因为获取锁后,if 判断和下一句赋值语句之间,可以有其他put或者get操作,而原来的直接让出时间片不会有这个问题。如果我有误解的地方,请给予指正,谢谢