|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Dmitry S. Rzhavin 2:5020/400 07 Apr 2000 12:03:29 To : All Subject : Re: Блокировка --------------------------------------------------------------------------------
Maxim Sobolev wrote:
>
> Sergey Budnitsky wrote:
>
> > Есть прога, которая ничего не делает, кроме как сидит и ждет прихода
> > разных сигналов и по пришествию их обрабатывает. Соот. в перерывах между
> > сигналами ее нужно как-то занять. Делать while(1) или sleep(100000000) не
> > хочется. Сейчас для этих целей, блокировка программы до прихода сигнала,
> > используется select(0,0,0,0,0).
> > Интересует, есть-ли специальные функции делающие такое (ждущие
> > прихода любого сигнала и отваливающиеся с EINTR)?
>
> Hу может быть nanosleep()
>
> > Если таковых не имеется, то
> > насколько правильно (безопасно, эффективно, ....) такое использование
> > select() в этих целях?
>
> Абсолютно нормально и правильно. Более того, это практически единственная
> подобная функция работающая практически одинаково на разных унихах. -Maxim
У меня несколько похожая задача, даже две:
1) надо сделать нечто такое:
for(;;) {
... // некий код
if (zhopa) {
// надо остановиться и ничего не делать,
// пока не придет сигнал. После того, как
// придет сигнал, он будет обработан, а мне
// надо просто продолжить (!!!) с этого места
}
... // опять код
}
2) Есть некий процесс, сидит и ловит UDP. Пакеты могут поступать
очень часто, а обработка пакета может занять тучу времени. Терять
пакеты ооочень не хочется (повторять их никто не будет, а надежность
линии и так не гарантирована). Скорее всего, надо разделить на 2
процесса: один сидит, ловит пакеты и скармливает их второму. Второй
уже их обрабатывает. Вопрос: как обеспечить достаточно большой буфер
для обмена (чтобы 1й никогда не вис из-за невозможности в него
записать),
а при этом 2й наоборот автоматически стопился, если буфер пуст (а не
висел в вечном цикле с проверкой буфера)?
--- ifmail v.2.15dev4
* Origin: Rostelecom (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/1018094269ed.html, оценка из 5, голосов 10
|