条件变量
条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。
条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:
1)一个线程等待"条件变量的条件成立"而挂起;
2)另一个线程使"条件成立"(给出条件成立信号)。
为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。
1.主要涉及到下面的函数:
int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr) ---动态创建条件变量
pthread_mutex_lock ---互斥锁上锁
pthread_mutex_unlock ----互斥锁解锁
pthread_cond_wait() / pthread_cond_timedwait -----等待条件变量,挂起线程,区别是后者,会有timeout时间,如 果到了timeout,线程自动解除阻塞,这个时间和 time()系统调用相同意义的。以1970年时间算起。
pthread_cond_signal ----激活等待列表中的线程,
pthread_cond_broadcast() -------激活所有等待线程列表中最先入队的线程
注意:1)上面这几个函数都是原子操作,可以为理解为一条指令,不会被其他程序打断