🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #217063

Re: Integracja bibliotek event-based

#217063
From: Mateusz Viste
Date: Thu, 11 Jun 2020 19:58
61 lines
3747 bytes
2020-06-11 o 11:00 -0700, Maciej Sobczak napisał:
> > Trzymajmy się założeń: była mowa o bibliotece "do http", innej "do
> > tweetera" i trzeciej "baza danych".  
> 
> Nie. Była mowa o integracji kilku bibliotek event-based.
> Przykłady dot. HTTP, bazy danych i Twittera to były *przykłady* do
> zobrazowania problemu a nie konkretne zadania do rozwiązania.

No widzisz, ja nie zajmuję się akademickimi rozważaniami, staram się
rozwiązywać wyłącznie praktyczne problemy. Było trafniejszy przykład
dać.

> Nie. W szczególności biblioteka do baz danych automatycznie dobierze
> metodę komunikacji zależnie od tego, gdzie jest baza. W
> szczególności, jeśli baza jest na tym samym komputerze

Unix domain? Też socket.

> to istnieją sprawniejsze metody komunikacji, niż sockety.

"sprawniejsze" w tym kontekście jest niezwykle śmieszne. Nie słyszałem
jeszcze o tym, by komukolwiek udało się odciążyć serwer bazodanowy
poprzez zmianę kanału komunikacji na "sprawniejszy" (pomijam ew.
głupoty jak silne ssl po localhost). To po prostu nie ma żadnego
znaczenia. No ale rozumiem, że znów chodzi o to, że oczekiwałeś
złotego rozwiązania na ogólny problem, a ja tu włażę w kaloszach
i saperką. Idealista.

> Pomijając drobny fakt, że select() nie nadaje się do obsługi tysięcy
> socketów

Użyj poll(). Względnie epoll().

> Co więcej, jest kompletnie bez sensu, żebyś duplikował ciężką pracę,
> którą biblioteka i tak robi w środku.

To zależy od konkretnego przypadku. Ciężka praca polegająca na otwarciu
połączenia żeby sprawdzić tweetera nie jest tak znów ciężka. Przy
innych rzeczach może być inaczej.

> Doszedłeś w ten sposób do wniosku, że do obsługi *kilku* bibliotek
> event-based potrzebne są wątki. Albo wyjdą z biblioteki albo do niej
> wejdą. Ale będą potrzebne.

Przy założeniu, że chcesz quasi-natychmiastowy czas reakcji, że
biblioteka nie udostępnia socketa(ów), że nie pracujesz na
żadnych przerwaniach sprzętowych oraz że nie chcesz busy loop z
opóźnieniem (lub bez)... to tak. Wszystko zależy od założeń
projektowych.

> tego stanu nie da się uwspólnić w jednym wątku, bez ciężkich
> kompromisów typu kręcenie się w pętli z odpytywaniem (nawet z jakimś
> mniej lub bardziej przemyślanym opóźnieniem).

"ciężki kompromis"? Bez przesady. Tak działał m.in. Win 3.x. I w
praktyce bardzo fajnie mu wychodziło. Kwestia doboru timingu do
akceptowalnego poziomu latencji oraz możliwości buforowych tego, co
biblioteki mają obsłużyć. A jeśli ma być nowocześnie i szybko to
wątki. No ale ty chcesz uniwersalny lek na zło całego świata. :)

Mateusz
Technical Details
Message-ID: <20200611215852.33a1c421@mateusz>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin2!goblin.stu.neva.ru!aioe.org!.POSTED.nyPK7k8oeDafdNpooDsxZQ.user.gioia.aioe.org!not-for-mail
References: <5d642286-413d-47db-91b0-c689bbe167f4o@googlegroups.com> <20200609094640.04ee0ae2@mateusz> <aa97820e-825e-4efe-b403-2c1f496dc7ffo@googlegroups.com> <20200610105625.30b3dad0@mateusz> <e642682f-3296-4377-85b1-4c7dee0359b4o@googlegroups.com> <20200611103732.69e48f11@mateusz> <9386ac2d-2d1d-46db-8f52-250c1511dfebo@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!goblin2!goblin.stu.neva.ru!aioe.org!.POSTED.nyPK7k8oeDafdNpooDsxZQ.user.gioia.aioe.org!not-for-mail
From: Mateusz Viste <mateusz@xyz.invalid>
Newsgroups: pl.comp.programming
Subject: Re: Integracja bibliotek event-based
Date: Thu, 11 Jun 2020 21:58:52 +0200
Organization: . . .
Lines: 86
Message-ID: <20200611215852.33a1c421@mateusz>
References: <5d642286-413d-47db-91b0-c689bbe167f4o@googlegroups.com> <20200609094640.04ee0ae2@mateusz> <aa97820e-825e-4efe-b403-2c1f496dc7ffo@googlegroups.com> <20200610105625.30b3dad0@mateusz> <e642682f-3296-4377-85b1-4c7dee0359b4o@googlegroups.com> <20200611103732.69e48f11@mateusz> <9386ac2d-2d1d-46db-8f52-250c1511dfebo@googlegroups.com>
NNTP-Posting-Host: nyPK7k8oeDafdNpooDsxZQ.user.gioia.aioe.org
Mime-Version: 1.0
X-Complaints-To: abuse@aioe.org
X-Notice: Filtered by postfilter v. 0.9.2
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit