как завершить спящий поток в pthread?

У меня есть поток, который спит долгое время, затем просыпается, чтобы что-то сделать, а затем снова засыпает, вот так:

while(some_condition)
{
    // do something
    sleep(1000);
}

Как я могу заставить этот поток выйти изящно и БЫСТРО ?

Я пытался использовать pthread_cancel () , но спящие потоки не могли быть отменены. Я также попытался изменить условие цикла while, но выход все равно займет много времени. И я не хочу использовать pthread_kill () , поскольку он может убить поток, когда он работает.

Итак, есть ли какие-нибудь хорошие идеи?

8
задан templatetypedef 24 January 2011 в 03:45
поделиться