我是一名计算机科学专业的学生,我有一项任务要求我使用自旋锁来锁定一个线程并在其关键部分完成后将其解锁。困难是我用Google搜索了很多次,但我没有找到任何有用的信息。例如,我试图包含像#include <linux/spinlock.h>
这样的标题,但是当我使用gcc编译这个c程序时,它说无法找到这样的标题。那么,我应该包含什么标题以及为了使用自旋锁我需要调用哪些函数?
答案 0 :(得分:2)
linux/spinlock.h
是Linux 内核标头的一部分。它不是Linux 程序开发的标题。
Spinlocks仅适用于竞争线程在不同核心上运行的情况。在内核和某些专门的应用程序之外,它们确切地控制哪些线程在哪个核心上运行,你需要的是一个合适的互斥锁,而不是一个自旋锁。查找标准库的pthread部分,特别是pthread_mutex_xxx
中声明的pthread.h
函数。
如果作业专门要求 spin 锁定,那么目标可能是您将螺旋锁作为学习练习。如何做到这一点取决于你有什么原语:实现自旋锁的原语依赖于CPU,如何访问它们取决于编程语言(以及编译器上的C语言)。