- 論壇徽章:
- 0
|
寫一個定時任務
三個線程如下:
(alarm_fun是時間線程的鬧鐘處理函數(shù))
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上的線程。
突然發(fā)現(xiàn)每次broadcast的時候只能喚醒一個線程,另一個線程似乎永遠無法得到喚醒。 |
各位,幫幫忙看看問題出在什么地方。謝謝
[ 本帖最后由 feiyinziiu 于 2009-11-30 16:26 編輯 ] |
|