当前位置: 技术问答>linux和unix
如何让一个线程再次等待
来源: 互联网 发布时间:2016-07-09
本文导语: 大家好: 我创建了一个线程,开始用pthread_cond_wait让它等待一个条件变量,当条件变量到来时用pthread_cond_signal发送给这个线程使它工作,现在我想让这个线程再次等待,应该怎么做啊,请高手指点,谢谢了! ...
大家好:
我创建了一个线程,开始用pthread_cond_wait让它等待一个条件变量,当条件变量到来时用pthread_cond_signal发送给这个线程使它工作,现在我想让这个线程再次等待,应该怎么做啊,请高手指点,谢谢了!
我创建了一个线程,开始用pthread_cond_wait让它等待一个条件变量,当条件变量到来时用pthread_cond_signal发送给这个线程使它工作,现在我想让这个线程再次等待,应该怎么做啊,请高手指点,谢谢了!
|
用两个变量来判断一下
int count1=0, count2=0;
线程1
pthread_mutex_lock(&count_lock);
while(count1==0||count2==0){
pthread_cond_wait(&count_nonzero, &count_lock);
//这里可以做你被第一次唤醒后的工作,然后会再次阻塞直到第二次被唤醒
}
pthread_mutex_unlock (&count_lock);
线程2
第一次唤醒线程1
pthread_mutex_lock(&count_lock);
if(count1==0)
pthread_cond_signal(&count_nonzero);
count1++;
pthread_mutex_unlock(&count_lock);
}
第二次唤醒
pthread_mutex_lock(&count_lock);
if(count2==0)
pthread_cond_signal(&count_nonzero);
count2++;
pthread_mutex_unlock(&count_lock);
}
int count1=0, count2=0;
线程1
pthread_mutex_lock(&count_lock);
while(count1==0||count2==0){
pthread_cond_wait(&count_nonzero, &count_lock);
//这里可以做你被第一次唤醒后的工作,然后会再次阻塞直到第二次被唤醒
}
pthread_mutex_unlock (&count_lock);
线程2
第一次唤醒线程1
pthread_mutex_lock(&count_lock);
if(count1==0)
pthread_cond_signal(&count_nonzero);
count1++;
pthread_mutex_unlock(&count_lock);
}
第二次唤醒
pthread_mutex_lock(&count_lock);
if(count2==0)
pthread_cond_signal(&count_nonzero);
count2++;
pthread_mutex_unlock(&count_lock);
}
|
man一哈就知道