Pracuję program C# i mam jedną funkcję, która zużywa zbyt dużo procesora. Chciałbym wiedzieć, jak można to kontrolować za pomocą kodu (nie za pomocą zewnętrznej aplikacji) i ograniczyć procent wykorzystania procesora. Jeśli na przykład zużywa 90% mocy procesora, moja aplikacja zużywa tylko 20%, nawet jeśli wolniej. Musi to być zrobione automatycznie i z poziomu aplikacji. Jeśli zapewnisz klasę, byłoby fantastycznie.Jak ograniczyć użycie procesora, co zajmuje program C#?
Odpowiedz
Nie wiem, czy można to zrobić, ale można zmienić priorytet wątku wykonywanego wątku za pomocą właściwości Priority. Ustawiłbyś to przez:
Thread.CurrentThread.Priority = ThreadPriority.Lowest;
Nie sądzę, że naprawdę chcesz to załatwić. Jeśli w innym przypadku maszyna jest bezczynna, chcesz ją zająć, tak? ThreadPriority pomaga przekazać to do programu planującego.
To pomoże niektórym, i jest jedynym sposobem, w jaki ja to robię. –
To najlepszy i jedyny sposób, aby zrobić to poprawnie. – Will
Widziałem aplikacje Windows, które były w stanie precyzyjnie ograniczyć się do ... powiedzmy 50% CPU. Poziom błędu wynosił mniej niż 1%. –
Możesz zwolnić pętlę, wywołując Thread.Sleep (milliseconds) w pętli. To przekazuje procesor z powrotem do harmonogramu.
Ale "pochłanianie zbyt dużej ilości procesora" powoduje, że myślę, że możesz mieć bardziej zasadnicze problemy. Czy to jest pytanie i czekanie na coś innego? Jeśli tak, powinieneś rozważyć użycie Zdarzenia lub innego mechanizmu sygnalizacji opartego na jądrze.
Chyba trzeba zapytać jakiegoś OS API, aby dowiedzieć się, ile CPU ty czasochłonne i podejmują decyzje (jak dławienie Thread.Sleep) Od tego dnia.
To brzmi jak kula: atakowanie objawu, a nie problem. Dlaczego nie publikujesz, co metoda próbuje zrobić, i poprosisz nas o pomoc w optymalizacji metody. –
To może być kula, ale mogę myśleć o kilku aplikacji dla tej idei, takich jak: CPU związany tle zadanie Crunch numery, węzeł w rozproszonym środowisku obliczeniowym komputerów biurowych, sztuczny Program inteligencja monitorować i uczyć się na własnych nawyki użytkowania. –
Aby ograniczyć wykorzystanie procesora o 50%, uruchom go na dwurdzeniowym rdzeniu; na czapkę 25%, uruchom ją na czterordzeniowym rdzeniu: D – Alan