比pthread更快的锁

17 浏览
0 Comments

比pthread更快的锁

我们正在构建一个对延迟非常敏感的应用程序。

除了锁定外,我们的完整应用程序在一个过程中需要大约2500个时钟周期,并且有两个需要获取和释放的锁。

我们预计99.98%的时间没有争用。

使用pthread lock和unlock会额外花费大约1800个周期。

有没有更快的实现方法?

基于原子操作编写锁可能有些棘手。

如果可能的话,我们更倾向于使用Linux头文件或boost头文件中的标准代码。

0
0 Comments

Faster lock than pthreads这个问题的出现原因是Pthread库的通用性过高。如果将其变得更加具体,使用该库的人将变得更少,结果每个人都会实现自己的锁,从而变得混乱。

解决方法是需要编写适合自己需求的锁。推荐阅读的资料是http://kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html。该资料可以帮助理解如何编写更快的锁。

以上是关于Faster lock than pthreads问题出现原因和解决方法的整理。

0
0 Comments

原因:

- pthreads的锁实现可能较慢

解决方法:

- 尝试使用Intel的Threading Building Blocks库中的spin_mutex,它是开源的,可以查看源代码以了解其实现细节

- 参考stackoverflow上的问题“Is my spin lock implementation correct and optimal?”,了解自旋锁的实现和性能优化方面的建议

0