-
Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: Andrzej Jarzabek <a...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: procedura tworzenia program w
Date: Tue, 21 Feb 2012 23:23:15 +0000
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 59
Message-ID: <ji1911$k1e$1@inews.gazeta.pl>
References: <jhliut$3he$1@mx1.internetia.pl>
<pj0lc5k2ww4z$.j8cj3ca4fdmw$.dlg@40tude.net>
<jhodnv$9en$2@inews.gazeta.pl>
<1rvfbwvj4h0dr$.5mc1fgvvz1ws.dlg@40tude.net>
<jhoql7$kq0$1@inews.gazeta.pl> <jhr1lj$ub3$1@node2.news.atman.pl>
<c...@4...com>
<4f414c67$0$2374$c3e8da3$47a2c32d@news.astraweb.com>
<c...@4...com>
<jht6ai$1ip$1@inews.gazeta.pl> <jhthug$tib$1@mx1.internetia.pl>
<jhtk1u$f91$1@inews.gazeta.pl>
<7...@m...googlegroups.com>
<jhuege$cep$1@inews.gazeta.pl> <ji13jt$4bp$1@inews.gazeta.pl>
<ji15eb$a8k$1@inews.gazeta.pl>
NNTP-Posting-Host: 5ac5171b.bb.sky.com
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: inews.gazeta.pl 1329866593 20526 90.197.23.27 (21 Feb 2012 23:23:13 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Tue, 21 Feb 2012 23:23:13 +0000 (UTC)
X-User: septi
In-Reply-To: <ji15eb$a8k$1@inews.gazeta.pl>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20120216
Thunderbird/10.0.2
Xref: news-archive.icm.edu.pl pl.comp.programming:195604
[ ukryj nagłówki ]On 21/02/2012 22:21, Wojciech Jaczewski wrote:
> Andrzej Jarzabek wrote:
>
>>> Nie mogę w takim przypadku używać pthread_cond_timedwait, bo zamiast
>>> poczekać planowane np. 5 sekund, raz poczeka mi 0 sekund a raz 5 minut.
>>
>> Ale pthread_cond_timedwait nie jest po to, żeby odmierzać czas!
>
> To po co w takim razie jest tam czas jako argument? I po co w ogóle istnieje
> ta funkcja, skoro jest pthread_cond_wait?
> Po prostu chciałem użyć pthread_cond_timedwait zgodnie z jej przeznaczeniem:
> poczekaj na zdarzenie lub upływ czasu. I w moich warunkach - nie mogę.
Ta funkcja, jak i wszystkie inne 'timed' nie jest po to, żeby jej używać
do normalnych czynności. Do tego, co próbujesz robić, powinieneś znowu
odpalić osobny wątek, który odczekuje odpowiednią ilość czasu i
sygnalizuje zmienną warunkową.
Funkcje 'timed' służą do zaimplementowania timeoutu, generalnie do
uniknięcia sytuacji, kiedy program by 'zwisał' albo zostawiał zbędne
wątki. Przykładowo jeśli wątkami realizujesz jakieś równolegle
działające komponenty w danym programie, to możesz chcieć mieć w tym
programie moduł monitorujący te komponenty, pozwalający użytkownikowi na
podglądnięcie, co program w danej chwili robi. I żeby taki moduł
wiedział, że dany wątek nadal żyje i czeka na cośtam, ten wątek może co
np. sekundę przerywać czekanie i wysyłać monitorowi komunikat 'nadal
żyję i czekam'. Inna możliwa sytuacja jest taka, że pewne wątki mogą
przestać być potrzebne - jako alternatywę dla pthread_cancel można
zaprojektować je tak, żeby periodycznie sprawdzały, czy powinny jeszcze
istnieć i jeśli nie, to się same zamykały.
>> Większa ilość wątków nie oznacza większej komplikacji - te wątki są
>> zresztą bardzo proste. A ponieważ - zwłaszcza jeśli się martwisz o
>> komplikację programu - masz to schowane za warstwą abstrakcji, to nie
>> robi to żadnej różnicy
>
> Do czasu, gdy nie pojawia się błąd - być może w zupełnie innej części,
> którego nie mogę wypatrzeć - wtedy nie mogę sobie na ślepo przyjąć
> założenia, że inne części, działające w innych wątkach są OK - w ramach
> szukania przyczyny błędu muszę zajrzeć także do nich. To, że zostało to
> schowane za warstwą abstrakcji wiele nie zmienia.
Właśnie wiele zmienia, bo pozwala na wnioskowanie o poszczególnych
częściach programu w izolacji. Oczywiście jeśli twój program ma UB, to
teoretycznie wszystko jest możliwe, ale w tym przypadku też można
dedukować przyczyny po objawach. Poza tym im prostszy dany element, tym
mniejsze prawdopodobieństwo, że ma UB. Np. funkcja typu void, która
blokuje aż będzie coś na wejściu czy innym sockecie, jest bardzo prosta.
Funkcja, która wywołuje zadaną funkcję typu void i ustawia zmienną
warunkową jest również bardzo prosta (a tę jedną funkcję możesz
wykorzystać do obsługi wszystkich interesujących cię zdarzeń,
wymieniając tylko która funkcja ma być wywołana.
Oczywiście do tego wszystkiego dobrze mieć jeszcze język wspierający
abstrakcję, a jeszcze lepiej do tego sensowne biblioteki, a nie grzebać
się w gołych pthreadsach. W ogóle jedyny racjonalny powód, jaki widzę,
żeby cokolwiek robić w pthreadsach, to napisanie Nowej Jeszcze
Zajebistszej Od Wszystkich Istniejących Biblioteki Do Wątków
(zajebistszej pod jakimkolwiek interesującym nas względem naturalnie).
Najnowsze wątki z tej grupy
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-05-26 O co chodzi?
- 2024-05-26 PJ autobus-tramwaj
- 2024-05-26 Renault Trafic i lampka z czerwonym STOP
- 2024-05-26 cena pięciocyfrowa
- 2024-05-26 Re: Jak dobra KE "okrada" złą Rosję "dla Ukrainy"
- 2024-05-25 supercap
- 2024-05-25 Sulzbach => Technischer Rollouter (d/m/w) <=
- 2024-05-25 Warszawa => Senior Account Manager <=
- 2024-05-25 Warszawa => Mid PHP Developer (Laravel) <=
- 2024-05-25 Warszawa => Mid PHP Developer (Laravel) <=
- 2024-05-25 Warszawa => Interactive/Experience Designer <=
- 2024-05-25 Warszawa => Key Account Manager <=
- 2024-05-25 Warszawa => SAP WM Consultant / Execution <=
- 2024-05-25 Warszawa => Key Account Manager <=
- 2024-05-25 Re: znów ten wrocław