Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Valentin Nechayev                    2:5020/400     05 Aug 2002  15:05:31
 To : Sergey Kipnis
 Subject : Re: Аналог эвентов в л   инуксе.
 -------------------------------------------------------------------------------- 
 
 >>> Sergey Kipnis wrote:
 
 >>Переменная, хранящая состояние event'а; condition variable,
 >>по которой сигнализируется ее изменение; мьютекс для сериализации доступа
 >>к перечисленному.
 SK> Так что мне поллить переменную нон-стоп?
 
 Откуда такие идеи?
 
 SK> Типа - 
 SK> while(!bSignaled)
 SK>   ;
 SK> Печально как-то.
 
 man pthread_cond_wait и pthread_cond_timedwait прочел? Hет?
 
 Ждешь примерно так:
 pthread_mutex_lock( &ep->ev_mutex );
 for(;;) {
   if( ep->ev_flag ) break;
   pthread_cond_wait( &ep->ev_cond, &ep->ev_mutex );
 }
 pthread_mutex_unlock( &ep->ev_mutex );
 
 Оно будет ждать пока не дадут "сигнал" по condition variable и пока ты
 не найдешь после сигнала ep->ev_flag равным не 0.
 Если хочешь безусловный вывал по таймауту - или в цикле проверяешь текущее
 время (и тогда обязательно pthread_cond_timedwait), или голый
 pthread_cond_timedwait без цикла.
 
 Сигнал дается так:
 
 pthread_mutex_lock( &ep->ev_mutex );
 pthread_cond_signal( &ep->ev_cond );
 pthread_mutex_unlock( &ep->ev_mutex );
 
 Все это если ep указывает на структуру вида
 
 {
   int      ev_flag;
   pthread_cond_t   ev_cond;
   pthread_mutex_t     ev_mutex;
 }
 
 SK> А что-нибудь вроде
 SK> WaitForSignal( hSignal, nMilliSecTimeout);
 SK> нету?
 
 pthread_cond_timedwait. Опишешь сколько ему можно спать.
 >>Hичего линуксового тут нет. Ищи описание программирования на Posix threads.
 >>Помни, что вызывать pthread_cond_signal и pthread_cond_broadcast можно только
 >>когда mutex захвачен - иначе не справишься с синхронизацией.
 >>Это наиболее тяжелые грабли;) Остальное, надеюсь, поймешь из описаний функций.
 SK> С этим(синхронизацией и тредами) я разберусь, тем более с мутексами и
 SK> тредами я уже работал.
 
 Hу так чего вопросы задаешь такие странные? ;)
 /netch
 --- ifmail v.2.15dev5
  * Origin: Dark side of coredump (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Аналог эвентов в линуксе.   Sergey Kipnis   02 Aug 2002 22:03:05 
 Re: Аналог эвентов в л инуксе.   Valentin Nechayev   02 Aug 2002 22:38:14 
 Re: Re: Аналог эвентов в л инуксе.   Sergey Kipnis   05 Aug 2002 14:36:44 
 Re: Аналог эвентов в л инуксе.   Valentin Nechayev   05 Aug 2002 15:05:31 
Архивное /ru.linux/7368b5d43ba9.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional