如何在Linux中使用自旋锁?

ikd*_*123 2 c linux mutex spinlock

我是一名计算机科学专业的学生,​​我有一项作业要求我使用自旋锁来锁定线程并在其关键部分完成后解锁它。困难的是我用谷歌搜索了很多次,但没有找到任何有用的信息。例如,我试图包含类似的头文件#include <linux/spinlock.h>,但是当我使用gcc编译这个c程序时,它说找不到这样的头文件。那么,为了使用自旋锁,我应该包含哪些标头以及需要调用哪些函数?

Gil*_*il' 6

linux/spinlock.h是 Linux内核头文件的一部分。它不是 Linux程序开发的头文件。

自旋锁仅适用于竞争线程在不同内核上运行时。在内核和某些专门控制哪些线程在哪个内核上运行的专用应用程序之外,您需要的是适当的互斥锁,而不是自旋锁。查找标准库的 pthread 部分,特别pthread_mutex_xxxpthread.h.

如果作业特别要求使用自旋锁,那么目标可能是让您实现自旋锁作为学习练习。如何做到这一点取决于您拥有什么原语:实现自旋锁的原语取决于 CPU,以及如何访问它们取决于编程语言(以及编译器上的 C)。