• 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

Mały hosting, OGROMNE możliwości
0 głosów
505 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,899 wizyt
pytanie zadane 5 lutego 2020 w C# przez kubekszklany Gaduła (3,250 p.)
+1 głos
1 odpowiedź 1,741 wizyt
pytanie zadane 18 kwietnia 2015 w C# przez Dorion300 Szeryf (90,250 p.)
0 głosów
0 odpowiedzi 258 wizyt
pytanie zadane 26 listopada 2018 w C# przez kubekszklany Gaduła (3,250 p.)

93,717 zapytań

142,629 odpowiedzi

323,261 komentarzy

63,261 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...