Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.os.linux.programowanie > #2248

::read i ::poll

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)

Show all headers | View raw


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 | NextNext in thread | Find similar


Thread

::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