Article View: pl.comp.programming
Article #217047Re: Embedded HTTP Server
From: heby
Date: Tue, 09 Jun 2020 21:32
Date: Tue, 09 Jun 2020 21:32
73 lines
5721 bytes
5721 bytes
On 09/06/2020 23:14, Maciej Sobczak wrote:
> Nie emulować, tylko sztucznie te zagadnienia rozdzielasz.
> Przecież biblioteka oparta w całości o callbacki jest eventowa niemal z założenia. To Ty usiłujesz jej przypisać jakieś inne cechy.
Ale "eventowa z wątkami" to nie to samo co "coroutines/cooperative".
Więc jeśli będziesz się upierał o to że callback z wątku to "event" to
mamy rózne pojęcie co to jest event-based i oba do obrony.
>>> Muteks jest potrzebny, jeśli masz powody, żeby robić sekcje krytyczne. Tylko od Ciebie zależy, czy będziesz miał te powody.
>> Nie. Jeśli mam event-based to nie mam powodów aby z powodu bibloteki
>> robić coś ekstra.
> Ciągle nie pokazałeś, dlaczego miałbyś robić coś ekstra.
> I dlaczego to akurat miałoby być z powodu tej biblioteki.
Bibliteka czyta/zapisuje zmienną globalną w implementacji callbacka.
Muszę ją obarierować i używać tej bariery w kodzie który nie ma NIC
wspólnego z serwerem HTTP. W ten sposób wątki z jakiejś bibliteki
agresywnie wymuszają na mnie zmiany kodu w miejscach odległych.
> Powtórzę: przykłady 1-5 *nie mają* muteksów. A jakie piękne GUI mają.
Helloworldy zazwyczaj nie mają żadnych problemów, chyba głównie dlatego
że połowa biblitek na necie nie ma innych zastosowań niż własne helloworldy.
Innymi słowy trudno o to aby kilka przykładów było dowodem w innym
zastosowaniu.
>>>> Mały muteksiak to duży kłopot w kilku przypadkach.
>>> Ale zapomniałeś je opisać.
>> Na przykład tam gdzie masz do czynienia z RT.
> No i? Jest cała szkoła modelowania systemów RT z obiektami chronionymi (patrz np. Ada i związane z nią papiery akademickie), gdzie muteksy w niczym nie przeszkadzają. Jaki masz problem z tymi muteksami?
Zajmują czas, wymagają grubego schedulera preemptive ze skomplikowaną
logią "Wait". Co prawda taki scheduler jest w zasięgu przeciętnego
programisty, ale to już nie jest za darmo.
>> Powiedzmy... piszesz soft do drukarki 3D sterujący wprost mechaniką.
> Łał. Myślałem, że drukarki 3D to był szpan dwa lata temu. :-p
> Teraz młodzież steruje dronami.
Nie, ten przykład to takie RT w domu, czyli w sam raz target Twojej
bibliteki. Hobbystyczny soft z hobbystycznymi biblitekami.
>> Wystawiasz w nim serwer www do sterowania.
> Masz na myśli, że serwer www lata na RaspberryPi
Obecnie sterowniki mają zaszyte jakeiś ARMy po 100MHz. Mimo że to RT to
w zasadzie procesor ma sporo wolnego w tzw "międzyczasie". Dlaczego nie
miałby generować jakiegoś www?
> Czy może masz na myśli to, że jakiś masochista uparł się, że serwer www z niesterowalnym stosem TCP musi koniecznie być na jedynym mikrokontrolerze?
Trudno to nazwać masochizmem że ktoś stara się wykorzystać CPU bez
dodatkowego point-of-failure jakim jest extra Pi robiące za serwer www.
>> Mutexy są mało sensowne
> Ale dalej nie pokazałeś, po co te muteksy. Masz jakieś fiksacje. :-)
Masz wątki to i masz mutexy. W zasadzie czasem tylko memory barrier z
tych mutextów, ale mimo to dalej masz *coś*. Gdyby było to tylko w
adapterze do tej bibliteki to spoko. Ale wątki złośliwie zarażają resztę
kodu pojęciem zasobu krytycznego.
>> Prawie kazdy widział wątek. Promil wie jak działa pod maską.
> [...]
>> Fakt, w http cięzko takie zagadnienia znaleźć ...
> O, to, to. Fajnie, że dostrzegasz bezcelowość swojego trollowania. :-)
Trudno powiedzieć czy to trolowanie. W zasadzie nie wiem. Może to
dlatego że niedawno trafiłem na równie bezuzyteczny kawałek kodu. Niby
mógłbym użyć, ale ... detale ... jak ten while (1){} w stackless TCLu.
Prawie dobrze tylko całkiem do dupy. Taka karma :/
Technical Details
Message-ID:
<rbov5h$ol4$1@dont-email.me>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!feeder.usenetexpress.com!tr2.eu1.usenetexpress.com!feeder5.feed.usenet.farm!feed.usenet.farm!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mailReferences:
<d423a072-9378-441b-ba06-e0657a1fa53bo@googlegroups.com> <rbg2hb$ebs$1@dont-email.me> <42ba89cb-8f2f-40a0-ac17-293f71f43f6fo@googlegroups.com> <rbgtv9$vuf$1@dont-email.me> <6a69d306-af0e-499c-bbdb-e74ae6d72a35o@googlegroups.com> <rbh5pi$gkn$1@dont-email.me> <8aa7b6ae-aa79-4a58-9717-e7c293363341o@googlegroups.com> <rbjlo6$dum$1@dont-email.me> <4e191a5e-e565-4e29-8dd5-bd6e5163061bo@googlegroups.com> <rbl1p9$sak$1@dont-email.me> <a939a6b9-a812-4011-81b1-82365df10111o@googlegroups.com> <rbmaac$cps$1@dont-email.me> <8ad576d7-4dd3-4cd7-ba53-2b3061289238o@googlegroups.com> <rbmcsp$utp$1@dont-email.me> <e088a6fa-05fa-46be-af00-07ea9023ab8bo@googlegroups.com> <rbosgc$7q4$1@dont-email.me> <05b9414f-00e5-4ed3-856a-366803697654o@googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!feeder.usenetexpress.com!tr2.eu1.usenetexpress.com!feeder5.feed.usenet.farm!feed.usenet.farm!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail From: heby <heby@poczta.onet.pl> Newsgroups: pl.comp.programming Subject: Re: Embedded HTTP Server Date: Tue, 9 Jun 2020 23:32:25 +0200 Organization: A noiseless patient Spider Lines: 73 Message-ID: <rbov5h$ol4$1@dont-email.me> References: <d423a072-9378-441b-ba06-e0657a1fa53bo@googlegroups.com> <rbg2hb$ebs$1@dont-email.me> <42ba89cb-8f2f-40a0-ac17-293f71f43f6fo@googlegroups.com> <rbgtv9$vuf$1@dont-email.me> <6a69d306-af0e-499c-bbdb-e74ae6d72a35o@googlegroups.com> <rbh5pi$gkn$1@dont-email.me> <8aa7b6ae-aa79-4a58-9717-e7c293363341o@googlegroups.com> <rbjlo6$dum$1@dont-email.me> <4e191a5e-e565-4e29-8dd5-bd6e5163061bo@googlegroups.com> <rbl1p9$sak$1@dont-email.me> <a939a6b9-a812-4011-81b1-82365df10111o@googlegroups.com> <rbmaac$cps$1@dont-email.me> <8ad576d7-4dd3-4cd7-ba53-2b3061289238o@googlegroups.com> <rbmcsp$utp$1@dont-email.me> <e088a6fa-05fa-46be-af00-07ea9023ab8bo@googlegroups.com> <rbosgc$7q4$1@dont-email.me> <05b9414f-00e5-4ed3-856a-366803697654o@googlegroups.com> Mime-Version: 1.0 Injection-Date: Tue, 9 Jun 2020 21:32:35 -0000 (UTC) Injection-Info: reader02.eternal-september.org; posting-host="4c153b40bcfdd4da9ebc0d5378bd9412"; logging-data="25252"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/13EYLdlA2LkzunSHMJov2" User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.8.1 Cancel-Lock: sha1:wnqUAJr3qXpTwwk4fj6Xt8TgwYQ= In-Reply-To: <05b9414f-00e5-4ed3-856a-366803697654o@googlegroups.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit