2013-06-24 5 views
0

У меня есть приложение, использующее posix-потоки, то есть используя статическую библиотеку, которая имеет некоторые глобальные переменные, и у меня нет никакой реализации потока в libray. Кто-то сказал мне, что вы должны использовать pthread_mutex, если вы используете pthreads в этом файле, иначе просто mutex., какой тип механизма блокировки использовать в общей библиотеке, т. Е. Доступ к потокам posix

Поскольку библиотека является потоковой, поэтому блокировка (специально мьютекс) для использования в библиотеке для защиты глобальных переменных.

Я попробовал linux/kernel/mutex.h, то есть, очевидно, плохо использовать объект ядра для использования в пользовательском пространстве и слишком сильное предупреждение компилятора. Итак, где я получу этот простой мьютекс !!!

+0

Если вы имеете в виду pthread_mutex_t, вы найдете их в pthread.h. –

ответ

0
#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)

Если вы это скомпилировать вы там