Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #33993

Re: Integracja bibliotek event-based

From heby <heby@poczta.onet.pl>
Newsgroups pl.comp.programming
Subject Re: Integracja bibliotek event-based
Date 2020-06-09 00:32 +0200
Organization A noiseless patient Spider
Message-ID <rbmea1$76l$1@dont-email.me> (permalink)
References <5d642286-413d-47db-91b0-c689bbe167f4o@googlegroups.com>

Show all headers | View raw


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.

Back to pl.comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Integracja bibliotek event-based Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-08 14:58 -0700
  Re: Integracja bibliotek event-based heby <heby@poczta.onet.pl> - 2020-06-09 00:32 +0200
    Re: Integracja bibliotek event-based heby <heby@poczta.onet.pl> - 2020-06-09 00:38 +0200
  Re: Integracja bibliotek event-based Mateusz Viste <mateusz@xyz.invalid> - 2020-06-09 09:46 +0200
    Re: Integracja bibliotek event-based Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-09 13:58 -0700
      Re: Integracja bibliotek event-based heby <heby@poczta.onet.pl> - 2020-06-09 23:18 +0200
      Re: Integracja bibliotek event-based Mateusz Viste <mateusz@xyz.invalid> - 2020-06-10 10:56 +0200
        Re: Integracja bibliotek event-based Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-10 14:19 -0700
          Re: Integracja bibliotek event-based Mateusz Viste <mateusz@xyz.invalid> - 2020-06-11 10:37 +0200
            Re: Integracja bibliotek event-based Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-11 11:00 -0700
              Re: Integracja bibliotek event-based Mateusz Viste <mateusz@xyz.invalid> - 2020-06-11 21:58 +0200
                Re: Integracja bibliotek event-based Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-12 11:55 -0700
                Re: Integracja bibliotek event-based Mateusz Viste <mateusz@xyz.invalid> - 2020-06-13 09:33 +0200
                Re: Integracja bibliotek event-based Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-13 12:52 -0700
                Re: Integracja bibliotek event-based Mateusz Viste <mateusz@xyz.invalid> - 2020-06-14 13:55 +0200
                Re: Integracja bibliotek event-based Maciej Sobczak <see.my.homepage@gmail.com> - 2020-06-14 11:52 -0700

csiph-web