pthread_cond_wait避免线程空转

多线程对同一块区域进行操作时,需要定义如下两种类型的变量:

pthread_mutex_t xxx;
pthread_cond_t yyy;

pthread_mutex_t类型的变量,即锁,对公共区域的操作进行同步;

pthread_cond_t类型的变量,用来对事件状态进行检测。

举例:读线程从队列中读取数据,当队列为空时,调用pthread_cond_wait函数阻塞自己,直到队列中有数据;写线程向队列中写入数据,如果队列之前的状态为空,写线程调用pthread_cond_signal函数唤醒正在被阻塞的读线程。

线程调用pthread_cond_wait阻塞自己可以让出cpu资源,避免线程在while(1)循环中空转,耗尽cpu资源。

常用函数:

int pthread_mutex_init(pthread_mutex_t *restrict mutex,
const pthread_mutexattr_t *restrict attr);
int pthread_mutex_destroy(pthread_mutex_t *mutex);
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex); int pthread_cond_init(pthread_cond_t *restrict cond,
const pthread_condattr_t *restrict attr);
int pthread_cond_destroy(pthread_cond_t *cond);
int pthread_cond_signal(pthread_cond_t *cond);
int pthread_cond_wait(pthread_cond_t *restrict cond,
pthread_mutex_t *restrict mutex);
上一篇:重命名nginx服务器


下一篇:Hadoop生态圈-hbase介绍-完全分布式搭建