golang使用sync.Cond实现CappedBlockingQueue

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
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值