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



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

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

然而,我仍然感到困惑;由于在没有争用的情况下,互斥体上的获取操作也会走得很快,因此性能增益不必具有足够的吸引力来迁移到无锁方法。

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

请为这两种情况提出建议-配备了先发制人机制的ULT和没有它的ULT

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

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

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

相关内容

  • 没有找到相关文章

最新更新