• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wielowatkowosc w C++ i Arduino

Object Storage Arubacloud
0 głosów
853 wizyt
pytanie zadane 6 września 2016 w C i C++ przez 0xf Dyskutant (8,180 p.)
Czesc, mam problem.

Jak okodowac sytuacje w ktorej mamy zapetlona czesc kodu i chcemy wczytac jakas zmienna ale co sekunde mamy rowniez robic pomiar w tle.

Tlumacze sytuacje zalozmy ze mamy takie cin>>' a i dopoki uzytkownik nie poda jakies wartosci to program ze tak powiem wisi a pomiary nie beda sie dokonywac.

Zalozmy ze za robienie pomiarow odpowiada funkcja float pomiar(); i wykonuje sie ona w zapetlonej czesci programu. Oraz funkcje cin ktora sie dokonuje jesli np wcisniemy jakies klawisze na naszym arduino.

Wiec pytanie jak wykonac funkcje ktora moze troche potrwac bo jest zalezna od uzytkownika oraz w tle miec ciagle dokonujace sie pomiary.

Ta sama analogia moze sie tyczyc programu konsolowego ze zamiast robic pomiar co sekunde wrzuca nam do bazy danych np. aktualna godzine albo liczbe o 2 wieksza (co sekunde).

Pozdrawiam

1 odpowiedź

0 głosów
odpowiedź 8 września 2016 przez MichuDev Pasjonat (20,300 p.)

Warto tutaj wiedzieć, jak działa wielowątkowość:

  • Wielowątkowość może działać na procesorze 1 rdzeniowym jak i wielordzeniowym.
  • Polega to na przełączaniu kontekstu i wykonywanie danego procesu przez pewien czas, zatrzymanie go, wznowienie itp.
  • W tym przypadku zarządza tym system operacyjny, a jak mamy procesory o dużej mocy to dla nas jest to jakby wszystko było w jednym momencie, choć procesor może wykonywać jednocześnie tyle operacji ile ma rdzeni (przy hyperthreadingu liczą się wątki).
  • Przełączanie kontekstu jest operacją kosztowną.

Ale przejdźmy, jak ty możesz to wykorzystać:

  •  Możesz stworzyć taki mikrosystem, który jest tylko twoim programem pod arduino.
  •  Będziesz sprawdzał, czy dany wątek może się wykonać i go wykonywał.
  •  Oczywiście wątek w twoim przypadku będzie oznaczał kilka funkcji, oraz wszystkie wątki będą współdzieliły pamięć, ale w twoim przypadku to wystarczy.
  •  Poza tym w tym przypadku przełączanie kontekstu nie będzie tak kosztowne jak na komputerze.

Jeśli chcesz więcej informacji. Przykładowy kod to pisz, chętnie pomogę :) 

komentarz 9 września 2016 przez 0xf Dyskutant (8,180 p.)
No przydałby się przykładowy kod. Niestety nie mogę sobie pozwolić na to żeby wywołanie jakiegoś wczytania z wyświetlacza zawieszalo mi co sekundowe odczyty. Dlatego muszę z tego skorzystać. Nie używałem wielowatkowosci nawet na programach pod kompa. Więc nie mam pojęcia jak to zrobić. Dlatego olbrzymie byś mi pomógł dając jakiś przykładowy kod. W arduino myślę że problemem będzie gdzie to umieścić czy w setup czy loopie nie mam pojęcia :(. Pozdrawiam

Podobne pytania

0 głosów
1 odpowiedź 413 wizyt
pytanie zadane 24 marca 2018 w C# przez Squu Użytkownik (520 p.)
0 głosów
0 odpowiedzi 122 wizyt
0 głosów
0 odpowiedzi 169 wizyt

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...