- 论坛徽章:
- 0
|
写一个定时任务
三个线程如下:
(alarm_fun是时间线程的闹钟处理函数)
alarm_fun()
{
pthread_mutex_lock(&mutex_a);
pthread_mutex_lock(&mutex_b);
pthread_cond_broadcast(&cond);
pthread_mutex_unlock(&mutex_a);
pthread_mutex_unlock(&mutex_b)
alarm(60);
}
pthread_a()
{
while(1)
{
pthread_mutex_lock(&mutex_a);
pthread_cond_wait(&cond, &mutex_a);
pthread_mutex_unlock(&mutex_a);
/*相应是程序代码*/
......
...
}
}
pthread_b()
{
while(1)
{
pthrad_mutex_lock(&mutex_b);
pthread_cond_wait(&cond, &mutex_b);
pthread_mutex_unlock(&mutex_b);
/*相应的程序代码*/
....
....
}
}
简单的描述就是,说,让线程a、b平时都挂起,只有当时间到了才通过pthread_cond_broadcast来唤醒所有挂起在条件变量cond上的线程。
突然发现每次broadcast的时候只能唤醒一个线程,另一个线程似乎永远无法得到唤醒。 |
各位,帮帮忙看看问题出在什么地方。谢谢
[ 本帖最后由 feiyinziiu 于 2009-11-30 16:26 编辑 ] |
|