pthread_mutex:信号锁
pthread_mutex_t mutex;
申请一个信号锁叫mutex
pthread_mutex_init(pthread_mutex_t mutex, const pthread_mutexattr_t *attr);//
设置信号量初始值
第一个参数:信号名字
第二个参数:信号的属性,一般为NULL。
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;//在申请时就设置信号初始值
pthread_mutex_lock(pthread_mutex_t *mutex);
传递地址,进行上锁操作。
pthread_mutex_unlock(pthread_mutex_t *mutex);
传递地址,进行解锁操作。
pthread_mutex_destroy(pthread_mutex_t *mutex);
传递地址,销毁信号锁。
sem_t sem
申请信号量,可以是多个信号量。
例如:sem_t sem1,sem2,sem3;或sem_t sem[3];
sem_init(&sem,0,1);//设置信号量初始值
第一个参数:信号量地址。
第二个参数:0代表线程信号量,1代表进程信号量,但是在Linux中1会出错。
第三个参数:设置锁的状态。0为锁,1为开锁状态。
sem _wait(&sem);
传入信号量地址,进行锁操作。
sem_post(&sem);
传入信号量地址,进行解锁操作