Locking 比pthreads更快的锁

Locking 比pthreads更快的锁,locking,atomic,spinlock,Locking,Atomic,Spinlock,我们正在构建一个对延迟非常敏感的应用程序。 除了锁定之外,我们的完整应用程序在一个进程中大约需要2500个时钟周期,并且有两个锁需要获取和释放。 我们预计99.98%的情况下不会发生竞争。 使用pthread lock和unlock需要大约1800个额外的周期。 在更快的公式中有指针吗? 基于原子操作编写锁可能很棘手。 如果可能的话,我们更倾向于在Linux头文件或boost头文件中使用标准代码。建议您从中尝试spin\u mutex。它是开源的(GPLv2),因此您还可以检查源代码以了解实现细

我们正在构建一个对延迟非常敏感的应用程序。 除了锁定之外,我们的完整应用程序在一个进程中大约需要2500个时钟周期,并且有两个锁需要获取和释放。 我们预计99.98%的情况下不会发生竞争。 使用pthread lock和unlock需要大约1800个额外的周期。 在更快的公式中有指针吗? 基于原子操作编写锁可能很棘手。
如果可能的话,我们更倾向于在Linux头文件或boost头文件中使用标准代码。

建议您从中尝试
spin\u mutex
。它是开源的(GPLv2),因此您还可以检查源代码以了解实现细节


您也可以看到这一点:

您没有太多的选择。Pthread库尽可能通用。如果你把它做得更具体,使用它的人就会更少,因此每个人最终都会实现自己的,弄得一团糟

恐怕你得自己写,特别适合你的要求。我建议如下:


我自己也在读。

如果这几乎没有争用的情况,那么您应该先尝试旋转锁,它们比锁好(在某些情况下,因为它会防止线程进入块状态)。原子操作也是不错的选择,但使用它们很困难。原子操作主要用于与可伸缩性相关的程序。顺便问一下,您是如何以这种方式分析代码的?尝试过pthread_spinlock。在外部环境中的时间减少了约40%,但仍然太多。我可以试着研究原子行动,但这件事可能很棘手。