sync.Cond需要结合互斥量使用,生产者与消费者的流程基本如下图
本例子中的queue使用链表实现,最好修改为数组或切片
package structure
import (
"container/list"
"sync"
)
// 队列内部结构,封装了list
type MessageBuffer struct {
buf *list.List
}
func NewMessageBuffer() *MessageBuffer {
return &MessageBuffer{
buf: list.New(),
}
}
func (mb *MessageBuffer) Size() int {
return mb.buf.Len()
}
func (mb *MessageBuffer) FrontValue() interface{} {
return mb.buf.Front().Value
}