线程互斥锁
互斥锁pthread_mutex_t
//用宏初始化
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t mutex;
参数:
返回值:
pthread_mutex_inti;初始化互斥锁
pthread_mutex_init(&mutex,NULL);
参数:
- &munext: 互斥锁
- 指向pthread_mutex_attr的指针;NULL为默认属性
返回值:
pthread_mutex_lock;互斥锁获取
int pthread_mutex_lock(pthread_mutex_t *mutex)
参数:
返回值:
pthread_mutex_unlock;互斥锁解锁
int pthread_mutex_unlock(pthread_mutex_t *mutex)
参数:
返回值:
//互斥锁的使用
#include <stdio.h>
#include <pthread.h>
// 线程互斥锁
pthread_mutex_t mutex;
// 线程1的线程函数
void *thread_func1(void *arg);
// 线程2的线程函数
void *thread_func2(void *arg);
int main(int argc, char *argv[])
{
pthread_t thread_id1;
pthread_t thread_id2;
// 1.初始化线程互斥锁
pthread_mutex_init(&mutex, NULL);
pthread_create(&thread_id1, NULL, thread_func1, NULL);
pthread_create(&thread_id2, NULL, thread_func2, NULL);
pthread_join(thread_id1, NULL);
pthread_join(thread_id2, NULL);
printf("main thread exit...\n");
return 0;
}
// 注意:互斥锁的获取和释放必须成对出现
void *thread_func1(void *arg)
{
// 获取互斥锁
pthread_mutex_lock(&mutex);
printf("thread 1...\n");
// 释放互斥锁
pthread_mutex_unlock(&mutex);
}
void *thread_func2(void *arg)
{
pthread_mutex_lock(&mutex);
printf("thread 2...\n");
pthread_mutex_unlock(&mutex);
}
网友评论