🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #72990

::open i timeout

#72990
From: heby
Date: Wed, 21 Oct 2020 15:23
30 lines
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-mail

Show 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