int pthread_mutex_lock(pthread_mutex *mutex);
int pthread_mutex_unlock(pthread_mutex *mutex);
int sem_init(sem_t *sem , int pshared, unsigned int value);
int sem_post(sem_t *sem);
int sem_wait(sem_t *sem);
int sem_destroy(sem_t *sem);
int pthread_cond_init(pthread_cond_t *cond,pthread_condattr_t *cond_attr);
int pthread_cond_wait(pthread_cond_t *cond,pthread_mutex_t *mutex);
- 区别:
- 互斥锁必须总是由给它上锁的线程解锁,信号量的挂出即不必由执行过它的等待操作的同一进程执行
- 互斥锁要么锁住,要么被解开(二值状态,类型二值信号量)。
- 条件变量是为了等待而设计的
- 互斥锁只允许一个线程进入临界区,而信号量允许多个线程同时进入临界区。