GO里面MAP如何实现key不存在 get操作等待 直到key存在或者超时,保证并发安全
保证并发安全,实现如下接口
type sp interface {
Out(key string, val interface{}) //存入key /val,如果该key读取的goroutine挂起,则唤醒。此方法不会阻塞,时刻都可以立即执行并返回
Rd(key string, timeout time.Duration) interface{} //读取一个key,如果key不存在阻塞,等待key存在或者超时
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
写了一段代码,不知道是否符合你的要求:
可以利用
channel
关闭goroutine
不阻塞特性来实现:下面的代码可以实现你的需求,只是没有写key被多次写入的判断逻辑。