2016-11-26 79 views
0

我是一名計算機科學專業的學生,​​我有一項任務要求我使用螺旋鎖來鎖定線程,並在其關鍵部分完成後解鎖。困難是我搜索了很多次,但我沒有找到任何有用的信息。例如,我試圖包含像#include <linux/spinlock.h>這樣的頭文件,但是當我使用gcc編譯這個c程序時,它說無法找到這樣的頭文件。那麼,我應該包含什麼頭文件,以及爲了使用螺旋鎖需要調用哪些函數?如何在Linux中使用螺旋鎖?

+0

請使用所有參數發佈完整的'gcc'命令。你的'-I'(包含路徑)參數是否正確? – Dai

+0

內核標題在這裏看起來很奇怪。在你可以使用的''中有'pthread_spin_init','pthread_spin_lock','pthread_spin_unlock'和'pthread_spin_destroy',但這聽起來好像你應該實現自己的旋轉鎖。 – Wintermute

回答

1

linux/spinlock.h是Linux 內核標題的一部分。它不是Linux 程序開發的頭文件。

自旋鎖僅適用於競爭線程在不同內核上運行的情況。除了內核和某些特定的應用程序,它們確切地控制在哪個內核上運行哪些線程,您需要的是一個適當的互斥量,而不是自旋鎖。查找標準庫的pthread部分,特別是pthread.h中聲明的pthread_mutex_xxx函數。

如果作業明確要求旋轉鎖定,那麼目標可能是讓您實施螺旋鎖作爲學習練習。如何做到這一點取決於你有哪些原語:實現spinlock的原語取決於CPU以及如何訪問它們取決於編程語言(以及編譯器上的C)。