条件变量 条件缩 pthread_cond_t

转载 2007年09月26日 22:39:00
说明,
等待线程
1。使用pthread_cond_wait前要先加锁
2。pthread_cond_wait内部会解锁,然后等待条件变量被其它线程激活
3。pthread_cond_wait被激活后会再自动加锁

激活线程:
1。加锁(和等待线程用同一个锁)
2。pthread_cond_signal发送信号
3。解锁
激活线程的上面三个操作在运行时间上都在等待线程的pthread_cond_wait函数内部。

程序示例:

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

pthread_mutex_t count_lock;
pthread_cond_t count_nonzero;
unsigned count = 0;

void * decrement_count(void *arg) {
pthread_mutex_lock (&count_lock);
printf("decrement_count get count_lock/n");
while(count==0) {
printf("decrement_count count == 0 /n");
printf("decrement_count before cond_wait /n");
pthread_cond_wait( &count_nonzero, &count_lock);
printf("decrement_count after cond_wait /n");
}
count = count -1;
pthread_mutex_unlock (&count_lock);
}

void * increment_count(void *arg){
pthread_mutex_lock(&count_lock);
printf("increment_count get count_lock/n");
if(count==0) {
printf("increment_count before cond_signal/n");
pthread_cond_signal(&count_nonzero);
printf("increment_count after cond_signal/n");
}
count=count+1;
pthread_mutex_unlock(&count_lock);
}

int main(void)
{
pthread_t tid1,tid2;

pthread_mutex_init(&count_lock,NULL);
pthread_cond_init(&count_nonzero,NULL);

pthread_create(&tid1,NULL,decrement_count,NULL);
sleep(2);
pthread_create(&tid2,NULL,increment_count,NULL);

sleep(10);
pthread_exit(0);

Linux操作系统下的多线程编程详细解析----条件变量pthread_cond_t那些事儿

推荐两个博文: http://www.cnblogs.com/Creator/archive/2012/04/18/2455584.html http://blog.csdn.net/su...

Linux线程浅析[线程的同步和互斥之线程同步的条件变量pthread_cond_t]

Linux线程浅析[线程的同步和互斥之线程同步的条件变量]  线程同步的条件变量  经典的写者和读者的同步问题 线程同步的条件变量线程同步—–条件变量互斥锁的特点就是它只有两种状态:锁定和非锁定 条件...

Linux多线程编程详细解析----条件变量 pthread_cond_t

Linux操作系统下的多线程编程详细解析----条件变量   1.初始化条件变量pthread_cond_init #include int pthread_cond_ini...
  • hoi0714
  • hoi0714
  • 2012年01月31日 08:51
  • 261

Linux多线程编程详细解析----条件变量 pthread_cond_t

Linux操作系统下的多线程编程详细解析----条件变量   1.初始化条件变量pthread_cond_init #include int pthread_cond_ini...

条件变量 pthread_cond_t

Linux操作系统下的多线程编程详细解析----条件变量   1.初始化条件变量pthread_cond_init #include int pthread_cond_init(...

条件变量pthread_cond_t

《UNIX环境高级编程》多线程同步,看到他举例说条件变量pthread_cond_t怎么用,愣是没有看懂,只好在网上找了份代码,跑了跑,才弄明白. 1. #include #inc...

线程条件变量pthread_cond_t

尊重原创:http://blog.csdn.net/icechenbing/article/details/7662026 1.初始化条件变量pthread_cond_init #incl...

POSIX多线程编程-条件变量pthread_cond_t

有的时候仅仅依靠锁住共享资源来使用它是不够的。有时候共享资源只有某些状态的时候才能够使用。比方说,某个线程如果要从堆栈中读取数据,那么如果栈中没有数据就必须等待数据被压栈。这种情况下的同步使用互斥锁 ...

Linux多线程编程详细解析----条件变量 pthread_cond_t

Linux多线程编程详细解析----条件变量 pthread_cond_t 分类: Linux/Shell 2010-11-24 11:30 13562人阅读 评论(0) 收藏 ...

多线程_条件变量pthread_cond_t

需包含头文件 pthread.h1.创建条件变量pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *);参数说明: pthre...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:条件变量 条件缩 pthread_cond_t
举报原因:
原因补充:

(最多只允许输入30个字)