Article View: pl.comp.os.linux.programowanie
Article #72990::open i timeout
From: heby
Date: Wed, 21 Oct 2020 15:23
Date: Wed, 21 Oct 2020 15:23
30 lines
2150 bytes
2150 bytes
Cześć. Jest pipe. Jest na nim ::open. Blokujący. Blokujący, bo w/g manuali nie wolno nic przesyłać przez rurę do momentu aż oba końce nie będa w stanie "open" a to gwarantuje (tylko?) wyjscie z open blokującego. Chcę, aby można go było "przerwać". Tzn widze to na dwa sposoby: 1) inny wątek wysyła flagę "dość, to nie ma sensu" 2) ::open (lub substytut) wychodzi sobie po paru ms i pyta co dalej. Ponieważ rownolegle takich "openów" jest kilka, w dodatku w tle ciągle się wołają, nie mogę wysłać jakiegoś ogólnego sygnału, bo nie wiem gdzie trafi. Muszę przerwać jeden, konkretny open. Jak to się prawidłowo rozwiązuje? Chwilowo mam taką emulację: odpalam ::open w innym watku, a w głównym po jakimś czasie wołam pthread_cancel. Tylko że to jest kiepskie. Dla ::read mam ::poll i to działa bardzo fajnie. No własnie. Czy powinienem uzyć ::open nieblokującego a zaraz za nim w pętli ::poll/::ppoll z POLLOUT? Toeretycznie taki poll czeka aż rura stanie się "writable". Czy to prawidłowe rozwiązanie (nie testowałem jeszcze)?
Technical Details
Message-ID:
<rmpjpt$pld$1@dont-email.me>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder.eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder.eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail From: heby <heby@poczta.onet.pl> Newsgroups: pl.comp.os.linux.programowanie Subject: ::open i timeout Date: Wed, 21 Oct 2020 17:23:39 +0200 Organization: A noiseless patient Spider Lines: 30 Message-ID: <rmpjpt$pld$1@dont-email.me> Mime-Version: 1.0 Injection-Date: Wed, 21 Oct 2020 15:23:41 -0000 (UTC) Injection-Info: reader02.eternal-september.org; posting-host="98fbdeaef31a4fabba17352456f3c36a"; logging-data="26285"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/DzmhIU6WD3/fNqXTCfDEr" User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.1 Cancel-Lock: sha1:uTgNMOi1Kt/qSmx6VYX2CyZ4uzQ= X-Mozilla-News-Host: snews://news.eternal-september.org:563 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit