首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >唤醒延迟非常低的锁

唤醒延迟非常低的锁
EN

Stack Overflow用户
提问于 2014-06-03 05:56:12
回答 1查看 256关注 0票数 0

我正在编写一个读写队列,它需要尽可能低的延迟。写入器的频率不足以使读取器始终处于忙碌状态,因此在常见的实现中,如果队列为空,则读取器将等待锁并进入睡眠状态。当一些东西被放入队列时,读取器被唤醒,然而,这会导致上下文切换并引入延迟。另一种方法是使用自旋锁,但它使用原子操作,本质上锁定在总线上,因此导致总线上的大量负载,影响其他作业的性能。

我的问题是,有没有一种方法可以使读取器处于某种空闲状态,而不会产生CPU,同时又不会对总线造成沉重的负载,并且每当有东西进入时,它就可以退出空闲状态并立即继续。目标是使从放入队列的东西到读取器开始处理它的延迟尽可能地低。我可以为读取器线程分配一个专用的CPU核心,所以在读取器空闲时不会浪费CPU。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-05-09 17:17:04

如果你关心的是延迟,那么就在没有锁的情况下旋转。确保在变量中使用关键字'volatile‘。

它不会有任何总线负载或内存绑定的缺点,因为您实际上是在检查L1/L2/...缓存。并且缓存在内核之间自动同步。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24003963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档