首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用户级线程上的无锁编程的有用性

用户级线程上的无锁编程的有用性
EN

Stack Overflow用户
提问于 2013-12-23 18:57:44
回答 1查看 131关注 0票数 3

与基于时间片的调度程序抢占相反,纯用户级线程(ULT)具有将处理器让给其他线程的特性。然而,从我在互联网上的冲浪中,我看到我们现在有几种抢占式的用户线程机制。

记住这一点,我想开始一场关于用户级线程上无锁编程的好处的讨论。我的理解是,无论是否存在抢占式调度器,无锁编程的性能都应该超过基于互斥/信号量的程序。

然而,我仍然感到困惑;因为互斥锁上的获取操作在没有争用的情况下也采用快速路径,因此性能增益不需要足够吸引人来迁移到无锁方法。

在信号量的情况下,有一个对系统调用的调用导致上下文切换,因此无锁方法可以被视为更好的选择。

请针对配备了抢占机制的ULT和未配备抢占机制的ULT这两种情况提出建议。

EN

回答 1

Stack Overflow用户

发布于 2013-12-23 19:56:31

这不是一个容易回答的问题,因为它非常普遍,它将归结为您的需求是什么。

我最近一直在处理那些考虑使用无锁结构的系统,但当我们坐下来写出我们的需求时,我们意识到它们实际上并不是我们想要的。我们的系统并不真的需要它们,事实上锁对我们有帮助,因为我们通常有一个生产者/消费者架构,如果没有任何东西被产生(即没有任何东西被添加到队列中),那么消费者应该是空闲的(即阻塞的)。

我最近写了一篇更详细的文章:http://blog.chrisd.info/a-simple-thread-safe-queue-for-use-in-multi-threaded-c-applications/

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

https://stackoverflow.com/questions/20742101

复制
相关文章

相似问题

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