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

C# Task/Thread baaaaaardzo wysokie zużycie procesora

VPS Starter Arubacloud
0 głosów
275 wizyt
pytanie zadane 8 lipca 2018 w C# przez PięćCzySześć Użytkownik (770 p.)
Cześć, mógłby mi ktoś wyjaśnić dlaczego dodanie 1 Task/Thread w moim programie który zawsze będzie działać w tle sprawia że mój program zużywa nagle ponad 30% procesora?

W tym Task/Thread jest jedna pętla while (true) i nic więcej.

Żeby nie było: cały czas używam Task do tego by np pobrać dane z bazy żeby nie zacinały aplikacji, lecz pierwszy raz robię coś co ma ciągle działać w tle. W tej pętli sprawdzam czy program się nie zaciął, jakby ktoś chciał wiedzieć. Ale nie wierzę że na laptopowym intel i5 7 generacji takie coś potrzebowało aż tyle zasobów procesora by móc działać prawidłowo. Zmiany w priority dla procesu itd itd itd itd nic nie dały, dosłownie nic.

Dziękuję za wszelką pomoc :)

1 odpowiedź

0 głosów
odpowiedź 8 lipca 2018 przez hun1er76 Stary wyjadacz (11,960 p.)
wybrane 8 lipca 2018 przez PięćCzySześć
 
Najlepsza
Nic dziwnego skoro zapętlasz wątek. Spróbuj dodać sleepa jakiegoś na końcu iteracji.
komentarz 8 lipca 2018 przez PięćCzySześć Użytkownik (770 p.)
ok już masz u mnie ptaszka ale błagam, powiedz jak to się stało. (zamurowało mnie)
komentarz 8 lipca 2018 przez hun1er76 Stary wyjadacz (11,960 p.)
Ogromne zużycie procesora jest skutkiem zapętlenia programu. Nawet gdy funkcja trwa powiedzmy 0,0005ms to procesor i tak non stop musi pracować. Po przez dodanie sleep, na choćby 500ms, procesor może sobie "długo odpocząć", przez co prawie nie widać zużycia.
komentarz 9 lipca 2018 przez PięćCzySześć Użytkownik (770 p.)
dałem 20 bo to akurat taka rzecz która jest dosyć ważna i musi na bieżąco monitorować stan aplikacji
komentarz 9 lipca 2018 przez mbady Obywatel (1,280 p.)
Skoro "ta ważna rzecz" musi monitorować na bieżąco stan aplikacji, to może warto zmienić model działania.

Nie wiem co to za aplikacja i co robi "ta ważna rzecz" w wątku więc ciężko coś zaproponować ale czasami zmieniając model działania, można wiele zyskać.

Np. To aplikacja zmieniając stan może o czymś informować i wykonywać jakieś działanie i w zależności czy reakcja ma być natychmiastowa, czy nie można różnie podejść do tematu.

Powiedzmy Aplikacja wysyła "stan" do innego procesu przy każdej zmianie stanu, i teraz np.: dodatkowy proces (może to być nawet osobna aplikacja lub aplikacja na innym komputerze) może sprawdzać czy dostaje odpowiedzi od aplikacji.

Podobne pytania

0 głosów
2 odpowiedzi 1,062 wizyt
pytanie zadane 5 lutego 2020 w C# przez kubekszklany Gaduła (3,170 p.)
+1 głos
1 odpowiedź 1,333 wizyt
pytanie zadane 18 kwietnia 2015 w C# przez Dorion300 Szeryf (90,250 p.)
0 głosów
0 odpowiedzi 116 wizyt
pytanie zadane 26 listopada 2018 w C# przez kubekszklany Gaduła (3,170 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...