假设我们有一个基于TCP / IP通信和多线程的客户端服务器应用程序。
让我们假设服务器端具有以下三个全局变量:
char matrix[ROW][COLUMNS];
int isEmpty = 0;
float anotherDummyVariable;
如果我按如下方式声明全局pthread互斥体
pthread_mutex_t myMutex = pthREAD_MUTEX_INITIALIZER;
我可以将此互斥锁用于这三个变量的lock
和unlock
,如下所示:
...somewhere in the code...
pthread_mutex_lock(&myMutex);
isEmpty = 1;
pthread_mutex_unlock(&myMutex);
和其他地方...
pthread_mutex_lock(&myMutex);
matrix[ROW][COLUMNS]={0};
pthread_mutex_unlock(&myMutex);
或我应该声明三个互斥量,每个要管理的全局变量一个,如下所示:
pthread_mutex_t matrixMutex = pthREAD_MUTEX_INITIALIZER;
pthread_mutex_t isEmptyMutex = pthREAD_MUTEX_INITIALIZER;
pthread_mutex_t anotherDummyVariableMutex = pthREAD_MUTEX_INITIALIZER;
然后在代码中的某处...
pthread_mutex_lock(&isEmptyMutex);
isEmpty = 1;
pthread_mutex_unlock(&isEmptyMutex);
和其他地方...
pthread_mutex_lock(&matrixMutex);
matrix[ROW][COLUMNS]={0};
pthread_mutex_unlock(&matrixMutex);
?