Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.os.linux.programowanie > #2248
| From | heby <heby@poczta.onet.pl> |
|---|---|
| Newsgroups | pl.comp.os.linux.programowanie |
| Subject | ::read i ::poll |
| Date | 2020-11-04 10:31 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <rntsee$3b1$1@dont-email.me> (permalink) |
Cześć. Czytam z rurki za pomocą ::read. Blokująco, bo na tym polega synchronizacja w tym konkretnym przypadku. Ale muszę raz na jakiś czas stwierdzić, czy nie czas awaryjnie się składać, obejrzeć jakas flagę, zawołać jakiś watchdog itd. ::read blokującego nie da się przerwać. Co prawda jest niby EINTR ale ja czekam w wielu wątkach na wielu rurach i musze precyzyjnie przerwać bardzo konkretny ::read, ten, a nie inny. Rozwiązanie okazało się proste: użyć ::poll. Czeka on aż pojawią się jakieś dane do odczytu, ale ma też timeout po którym zwraca mi sterowanie i to załatwia temat przerywalnosci odczytu. I wszystki super działa, tylko jest ... znacznie wolniejsze. Wywołanie ::read jest szybsze niż pary ::poll->::read. No i co z tym teraz zrobić? Jest jakaś inna metoda na posiadanie blokującego ::read ale jednocześnie możliwosci przerwania tego read na żądanie? PS. Mogę zamknąc deskryptor pliku i wtedy ::read wylautuje z błedem. Ale to jest nieeleganckie, ponadto nie dośc że powoduje race-conditions, to jeszcze jest destrukcyjne, tzn komunikacja jest już niemożliwa do wznowienia. A ja chce przerwać read, coś sprawdzić i wrócić do czekania na dane.
Back to pl.comp.os.linux.programowanie | Previous | Next — Next in thread | Find similar
::read i ::poll heby <heby@poczta.onet.pl> - 2020-11-04 10:31 +0100
Re: ::read i ::poll michal.lyszczek@bofc.pl - 2020-11-05 11:45 +0100
Re: ::read i ::poll heby <heby@poczta.onet.pl> - 2020-11-05 12:57 +0100
Re: ::read i ::poll michal.lyszczek@bofc.pl - 2020-11-05 13:43 +0100
Re: ::read i ::poll heby <heby@poczta.onet.pl> - 2020-11-05 15:26 +0100
Re: ::read i ::poll michal.lyszczek@bofc.pl - 2020-11-05 16:01 +0100
Re: ::read i ::poll heby <heby@poczta.onet.pl> - 2020-11-05 19:16 +0100
csiph-web