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

Programowanie wielowątkowe, c++ VS winApi, dostęp do pamięci

Object Storage Arubacloud
0 głosów
299 wizyt
pytanie zadane 24 marca 2016 w C i C++ przez Nondzu Obywatel (1,910 p.)

Pracuje ostatnio nad troszkę większym projektem i głowię się nad problemami związanymi z wielowątkowością. Piszę w Visual Studio w C++ WinApi only konsola ;) Mam wątek główny i inny który pobiera mi dane z pewnych peryferii i zachodzi mi głowę pewna rzecz, mianowicie ona działa ale nie jestem pewny czy poprawnie jest to zrobione, a sam program musi być stabilny i nie może się wieszać. 

Działanie wygląda tak:
1. Wątek poboczny pobiera dane, po zebraniu wszystkich danych wywołuje poprzez wskaźnik moją funkcje, która jako argumenty dostaje te dane i je analizuje. 
2. W tej mojej funkcji wywołuje inne funkcje i korzystam z kilku struktur globalnych (wiem że globale nie są najlepsze, powoli zaczynam się do tego dostosowywać i je ograniczać ;) )
3. W wątku głównym programu również korzystam z tych funkcji i struktur.

Jeśli wywołuje moją funkcję poprzez wskaźnik w wątku, to czy możliwe jest, w głównej pętli programu zostanie wywołana w tym samym czasie ta sama funkcja bądź wykorzystana ta sama struktura bądź zmienna ? Puki co program się nie wysypuje i nie ma błędów z dostępem do pamięci, tylko czy aby na pewno taki sposób jest dobry ? 

Będę wdzięczny za każdą podpowiedź. 

Pozdrawiam 

3 odpowiedzi

+2 głosów
odpowiedź 24 marca 2016 przez niezalogowany
Tak, jeżeli 2 różne wątki korzystają z tych samych zasobów to istnieje prawdopodobieństwo że w tym samym czasie zaczną pracować na tych samych danych, a wtedy mogą stać się różne złe rzeczy. Skorzystaj z np mutexów.
+1 głos
odpowiedź 24 marca 2016 przez mbabane Szeryf (79,280 p.)

To co opisujesz to jest chyba najwiekszy problem w wielowatkowosci bo nie ma za bardzo sposobu na to zeby dowiedziec sie kiedy system operacyjny wykona dany watek i kiedy uruchomi nastepny.

Ogolnie, sposoby na zwalczanie takich problemow znajduja sie pod haslem synchronizacja watkow/procesow.

0 głosów
odpowiedź 24 marca 2016 przez Nondzu Obywatel (1,910 p.)
Dziękuje Wam za odpowiedzi, chyba będę musiał rozeznać się bardziej z tematem wielowątkowości. Jak pisałem program nie zawiesza się i pracuje (puki co) prawidłowo jednak nie chcę aby podczas jego prezentacji i jego późniejszego działania zaczął się wieszać i powodować problemy. Tworzenie nowych wątków jest bardzo pomocne gdy czas reakcji jest krytyczny, jednak nie tak proste jakby się wydawało, myślałem że wskaźniki rozwiążą trochę problemów ;)

Pozdrawiam

Kamil

Podobne pytania

0 głosów
1 odpowiedź 229 wizyt
pytanie zadane 10 stycznia 2019 w C i C++ przez Sic Dyskutant (8,510 p.)
0 głosów
1 odpowiedź 182 wizyt
0 głosów
1 odpowiedź 312 wizyt
pytanie zadane 25 marca 2016 w C i C++ przez MasterFlamaster Początkujący (300 p.)

92,568 zapytań

141,420 odpowiedzi

319,618 komentarzy

61,954 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!

...