[Zegar szachowy #5] Maszyna stanu

Поделиться
HTML-код
  • Опубликовано: 9 ноя 2024

Комментарии • 6

  • @mjamrozek
    @mjamrozek 8 месяцев назад

    Jak mówiłeś o observerze to zastanawiałem się czy użyjesz malloca 🙂
    Jak nie chę używać malloca (a w embedded nie chcę) to robię sobie enum ze slotami gdzie moge coś podpiąć:
    enum PeriodicTasksSlots {
    SLOT_1MS_0,
    SLOT_1MS_1,
    SLOT_1MS_2,
    SLOTS_1MS_LENGTH
    };
    periodic_subscribe_1ms(SLOT_1MS_0, myFirstHandler);
    periodic_subscribe_1ms(SLOT_1MS_1, mySecondHandler);
    periodic_subscribe_1ms(SLOT_1MS_2, myThirdHandler);
    co myślisz o tym? ma taką wadę, że można nadpisać jakiś callback

    • @ucgosupl
      @ucgosupl  8 месяцев назад +1

      No właśnie, bo i tak publisher trzyma listę callbacków. Ta lista może być zaimplementowana w postaci zwykłej tablicy bez malloców. Prawie zawsze kombinacja tablic, wskaźników i struktur umożliwi pominięcie malloca. W Twoim rozwiązaniu poszczególne moduły muszą wiedzieć, które sloty mogą użyć. Nie widzę takiej potrzeby - slotami powinien zarządzać publisher. Jeżeli faktycznie potrzebujesz gdzieś ID, to możesz je zwracać z funkcji. Ale w tym wypadku to chyba nie będzie potrzebne.

  • @Bareizm
    @Bareizm 6 месяцев назад

    Nie mogę znaleźć linku do filmu o observerze. Można prosić o wrzutkę?

    • @ucgosupl
      @ucgosupl  6 месяцев назад

      Faktycznie. Przeszukałem całe archiwum i nie ma obserwera w filmach. Był tylko na live'ach i w kursach. Tutaj masz w takim razie linka do nagrania z live, gdzie pokazuję przykład:
      ruclips.net/video/J7kk5T8dWA4/видео.html
      Jak by timestampy były źle - o obserwerze jest od około 1h28m do 1h42m

  • @mateusztocha9260
    @mateusztocha9260 8 месяцев назад

    chyba warto dać jakiegoś asserta przy rejestracji/subskrybcji co by nie był nullem zamiast w momencie wywołania zarejstrowanych metod.

    • @ucgosupl
      @ucgosupl  8 месяцев назад +1

      Najlepiej by było zrobić unit testy i sprawdzić przypadki brzegowe :) Ale to dojdzie dopiero później. Unit testy nawet znalazły gdzieś nulla w callbacku i był segmentation fault. Ale to spoiler z kilku odcinków do przodu :D
      Co do sprawdzania przy subskrybowaniu callbacka - zobacz, że jak sprawdzam w momencie wywołania, to nie ma znaczenia, czy ktoś dodał nulla czy nie. Poza tym po inicjalizacji cała tablica jest wypełniona nullami i też się muszę przed tym bronić. Tak wydawało mi się najprościej, ale faktycznie może są jakieś przypadki brzegowe i może da się to lepiej zaimplementować.