|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/7368b5d43ba9.html, оценка из 5, голосов 10
|