Thread View: pl.comp.os.linux.programowanie
1 messages
1 total messages
Started by heby
Wed, 21 Oct 2020 15:23
::open i timeout
Author: 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)?
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads