eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingIntegracja bibliotek event-based › Re: Integracja bibliotek event-based
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.man.lodz.pl!newsfeed.pionier.net.p
    l!2.eu.feeder.erje.net!feeder.erje.net!news.uzoreto.com!aioe.org!.POSTED.nyPK7k
    8oeDafdNpooDsxZQ.user.gioia.aioe.org!not-for-mail
    From: Mateusz Viste <m...@x...invalid>
    Newsgroups: pl.comp.programming
    Subject: Re: Integracja bibliotek event-based
    Date: Thu, 11 Jun 2020 10:37:32 +0200
    Organization: . . .
    Lines: 78
    Message-ID: <20200611103732.69e48f11@mateusz>
    References: <5...@g...com>
    <20200609094640.04ee0ae2@mateusz>
    <a...@g...com>
    <20200610105625.30b3dad0@mateusz>
    <e...@g...com>
    NNTP-Posting-Host: nyPK7k8oeDafdNpooDsxZQ.user.gioia.aioe.org
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable
    X-Complaints-To: a...@a...org
    X-Notice: Filtered by postfilter v. 0.9.2
    Xref: news-archive.icm.edu.pl pl.comp.programming:214991
    [ ukryj nagłówki ]

    2020-06-10 o 14:19 -0700, Maciej Sobczak napisał:
    > Jest gorzej. To nie muszą być sockety. Np. system QNX ma fajny
    > mechanizm komunikacji IPC, który istnieje poza przestrzenią
    > deskryptorów plików. A ktoś inny będzie się komunikował przez pamięć
    > dzieloną.

    Trzymajmy się założeń: była mowa o bibliotece "do http", innej "do
    tweetera" i trzeciej "baza danych". Każda z nich raczej (?) opiera się
    na socketach.

    > No i nie możemy zakładać, że socket jest jeden, albo że ciągle ten
    > sam, itd. Straszne komplikacje.

    Jeśli jest ten sam to komplikacji nie ma - jeśli się urywa to
    biblioteka zwraca błąd i trzeba zainicjalizować na nowo. Jeśli
    natomiast socket się tworzy nowy przy każdym zawołaniu (np. sprawdzanie
    tweetów via nową sesję ssl za każdym razem), to każde sprawdzenia
    powinno być regularnie wywoływane przez program.

    > dodatkowy argument, żeby czekać. Tak jest w YAMI4. Wtedy pętla
    > użytkownika nie musi być busy - po prostu blokuje się, jak nie ma nic
    > do roboty.

    Po bardzo pobieżnym przejrzeniu rozumiem to tak, że inspirel oczekuje
    że stworzysz swój własny wątek specjalnie dla wołania ich biblioteki:

    "All activity has to be driven by the application, which is supposed to
    'lease' one of its threads for doing the I/O work on behalf of the
    agent. This is achieved by calling the Do_Some_Work procedure in Ada
    or the do_some_work function in C++.

    The 'do some work' routine performs a single unit of work and
    returns to the caller. In a typical application it will be called in
    a tight loop."

    W takiej sytuacji niewiele można zrobić. Patrz niżej.

    > > Ale to tylko jeśli biblioteki faktycznie nie udostępniają
    > > jakichkolwiek mechanizmów sygnalizacji swoich potrzeb.
    >
    > Dobry trop.
    > To w jaki sposób chciałbyś być poinformowany, że biblioteka ma
    > potrzebę?
    >
    > Przypominam, że mamy 3 biblioteki. Przyjmijmy wersję idealną, że
    > wszystkie 3 będą mieć ten mechanizm. Jaki?

    Idealnie? No to chcę sam obsługiwać kanał danych (socket, IPC,
    whatever), a bibliotekę będę wołał tylko po to, żeby te dane
    obrobić/przetłumaczyć. Alternatywnie - niech biblioteka da dostęp do
    socketów, wówczas wiem, że jak coś się zmieni na kablu to powinien
    zawołać kogoś do obsługi. Ostatnia opcja: niech biblioteka da jakiś
    swój blokujący "wait_for_event()", sama niech blokuje w sposób
    eko-mądry i zależny od implementacji, a ja sobie ją wywołam w osobnym
    wątku. 3 biblioteki = 3 wątki, da się przeżyć.

    Mateusz

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: