我有一个使用 posix 线程的应用程序,即使用一个具有一些全局变量的静态库,并且我在 libray 中没有任何线程实现。有人告诉我,如果您在该文件中使用 pthreads,则应该使用 pthread_mutex,否则使用简单的互斥锁。
由于库是无线程的,因此在库中使用哪个锁(特别是互斥锁)来保护全局变量。
我尝试了 linux/kernel/mutex.h ,即使用内核对象在用户空间中使用显然不好,编译器也警告。那么我在哪里可以得到这个简单的互斥锁!!!
我有一个使用 posix 线程的应用程序,即使用一个具有一些全局变量的静态库,并且我在 libray 中没有任何线程实现。有人告诉我,如果您在该文件中使用 pthreads,则应该使用 pthread_mutex,否则使用简单的互斥锁。
由于库是无线程的,因此在库中使用哪个锁(特别是互斥锁)来保护全局变量。
我尝试了 linux/kernel/mutex.h ,即使用内核对象在用户空间中使用显然不好,编译器也警告。那么我在哪里可以得到这个简单的互斥锁!!!
#include<pthread.h>
int main(int argc, char** argv){
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock(&lock);
pthread_mutex_unlock(&lock);
}
您可以使用以下方法进行编译:(gcc -o mutex program.c -pthread -Wall -Wextra -pedantic
注意不是 -lpthread 的解释,请参阅此线程中 EmployedRussian 的答案:Undefined reference to pthread_create in Linux)
如果你得到这个编译你就在那里