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!newsfeed.pionier.net.pl!2.eu.feeder.erj
    e.net!feeder.erje.net!newsreader4.netcologne.de!news.netcologne.de!news.uzoreto
    .com!eternal-september.org!feeder.eternal-september.org!reader01.eternal-septem
    ber.org!.POSTED!not-for-mail
    From: heby <h...@p...onet.pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Integracja bibliotek event-based
    Date: Tue, 9 Jun 2020 00:32:25 +0200
    Organization: A noiseless patient Spider
    Lines: 31
    Message-ID: <rbmea1$76l$1@dont-email.me>
    References: <5...@g...com>
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Transfer-Encoding: 8bit
    Injection-Date: Mon, 8 Jun 2020 22:32:34 -0000 (UTC)
    Injection-Info: reader02.eternal-september.org;
    posting-host="4c153b40bcfdd4da9ebc0d5378bd9412"; logging-data="7381";
    mail-complaints-to="a...@e...org";
    posting-account="U2FsdGVkX18Mgq4M8QCf80rysPQZ8tgS"
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101
    Thunderbird/68.8.1
    Cancel-Lock: sha1:xsLiIRycG1LqVDBn1THb8gB0WCs=
    In-Reply-To: <5...@g...com>
    Content-Language: en-US
    Xref: news-archive.icm.edu.pl pl.comp.programming:214970
    [ ukryj nagłówki ]

    On 08/06/2020 23:58, Maciej Sobczak wrote:
    > Jakie jest poprawne rozwiązanie dla integracji tych 3 bibliotek?

    To zależy co robią.

    Jeśli ich zadaniem jest coś policzyć i zniknąć to masz dobrze.

    Jesli ich zadaniem jest coś policzyć tylko jak będzie potrzeba to od
    tego masz wsparcie OSa i jego pętlę komunikatów. Być może też jakieś
    wątki pod spodem, ale klient o nich nie wie, bibliteka często też nie
    wie. Ogólnie cooperative multitasking bazuje na tym że robisz jak
    przychodzi jakiś event. Systemowy zazwyczaj. Można poprosić aby
    przychodził non-stop jeden za drugim. Każdemu w/g potrzeb.

    Oba podejścia są od dziesiątek lat katowane choćby w Qt i masz tam jakiś
    obraz tego jak zrobić 1) (onIdle()) i jak zrobić 2) (push event). Mogą z
    sobą działać bardzo gładko i elegancko.

    Mam duże (w sensie wielopoziomoe) algorytmy rozbite na pojednycze kroki
    i popychane z onIdle z głownej pętli. Spadek wydajności jest, ale
    pomijalny, choć oczywiscie wszystko zależy od tego jak realizowany jest
    yeld(). To podejście jest nie dla sztuki, tylko warunki brzegowe
    utrudniają użycie watków. Na szczęscie nie ma najmniejszego problemu, w
    dodatku mogę takie coroutines wrzucić *dynamicznie* do wątku i z niego
    wyjąć kiedy tylko chcę, na przykład w połowie pracy.

    Teoretycznie każdy algorytm można przerobić na coroutine za pomocą
    boost::context ale koszt może być wysoki, to wszak przełącza kontekst,
    prawie jak wątek. W przypadku ręcznym najczęściej pasuje jakiś wzorzec
    typu maszyn stanów. Do ogarnięcia w typowych przypadkach, rekurencja
    jest bardziej bolesna, ale niewiele.

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: