当前位置: 技术问答>linux和unix
linux中程序中的3个线程 怎么让线程1控制线程 2 线程3
来源: 互联网 发布时间:2017-04-13
本文导语: 线程1 2 3 都在同时运行, 线程1 突然来了个一个通知,需要让线程2 与 3 同时阻塞在那里,或者空转也行(这个可以加标记的可以实现)! 现在是想同时阻塞等待,所以请问大侠们怎么弄? | ...
线程1 2 3 都在同时运行,
线程1 突然来了个一个通知,需要让线程2 与 3 同时阻塞在那里,或者空转也行(这个可以加标记的可以实现)!
现在是想同时阻塞等待,所以请问大侠们怎么弄?
线程1 突然来了个一个通知,需要让线程2 与 3 同时阻塞在那里,或者空转也行(这个可以加标记的可以实现)!
现在是想同时阻塞等待,所以请问大侠们怎么弄?
|
pthread_cond_t cond
pthread_mutex_t mutex
volatile int flag = 0
//init cond and mutex
thread1:
//receive a message
flag = 1
...
...
//going to terminate
pthread_cond_broadcast(&cond)
thread2:
//begin
pthread_mutex_
if(flag) {
pthread_mutex_lock(&mutex)
pthread_cond_wait(&cond, &mutex)
pthread_mutex_unlock(&mutex)
}
thread3:
//ditto
pthread_mutex_t mutex
volatile int flag = 0
//init cond and mutex
thread1:
//receive a message
flag = 1
...
...
//going to terminate
pthread_cond_broadcast(&cond)
thread2:
//begin
pthread_mutex_
if(flag) {
pthread_mutex_lock(&mutex)
pthread_cond_wait(&cond, &mutex)
pthread_mutex_unlock(&mutex)
}
thread3:
//ditto