linux系统下,线程之间保护临界区时,若占用时间较短,则可以使用锁机制。
用法如下:
1. 初始化
(1)pthread_mutex_t lock;//动态初始化
pthread_mutex_init(&lock, NULL);
(2)pthread_mutex_t mymutex=PTHREAD_MUTEX_INITIALIZER;//静态初始化
2. 加锁过程:
pthread_mutex_lock(&lock)
3. 解锁过程:
pthread_mutex_unlock(&lock);
4. 注销(适用于动态初始化的锁)
pthread_mutex_destroy(&lock);
----------------------------------------------------------------------
有些情况下,需要保持线程的同步,可在加锁的基础上,使用信号机制。
1. 初始化
(1)静态初始化
pthread_cond_t cond=PTHREAD_COND_INITIALIZER;
(2)动态初始化
pthread_cond_t cond;
pthread_cond_init(&cond, NULL);
2. 进入等待状态,且释放锁
pthread_cond_wait(&cond); //此时,锁已经释放,该语句需在pthread_mutex_lock()与pthread_mutex_unlock()之间使用
3. 发送信号
pthread_cond_signal(&cond);//需同时释放锁。
4. 注销
pthread_cond_destroy(&cond);