线程之间的同步和互斥解决的问题是线程对共同资源进行访问。Posix有两种方式:
信号量和互斥锁;信号量适用同时可用的资源为多个的情况;互斥锁适用于线程可用的资源只有一个的情况
1、互斥锁:互斥锁是用加锁的方式来控制对公共资源的原子操作(一旦开始进行就不会被打断的操作)
互斥锁只有上锁和解锁两种状态。互斥锁可以看作是特殊意义的全局变量,因为在同一时刻只有一个线程能够对互斥锁进行操作;只有上锁的进程才可以对公共资源进行访问,其他进程只能等到该进程解锁才可以对公共资源进行操作。
互斥锁操作函数:
pthread_mutex_init();//初始化
pthread_mutex_lock();//上锁 参数:pthread_mutex_t *mutex
pthread_mutex_trylock();//判断上锁 参数:pthread_mutex_t *mutex
pthread_mutex_unlock();//解锁 参数:pthread_mutex_t *mutex
pthread_mutex_release();//消除互斥锁