To zależy od tego, co chcesz zrobić w tej pętli.
Jeśli czekasz w pętli (np. Naciśnięcie klawisza {zrobienie czegoś} to twój mechanizm będzie marnować zasoby systemowe, nie dając nic w zamian.Odrobniony procesor po prostu zrobi więcej wolnych pętli.Może to zostać rozwiązane przez oczekiwanie na zdarzenia Nie po prostu spać, ale najlepiej zdarzenie, które wyzwala, że coś znaczącego można zrobić.Na przykład, operacja na plikach (stdin jest również plikiem) byłaby przenośnym mechanizmem, który ustąpi innym aplikacjom, dopóki dane nie będą dostępne. bardziej szczegółowe może wymagać zanurzenia się w semafory lub sygnały, które są często zależne od systemu operacyjnego. Warstwa abstrakcji może rozwiązać ten problem:
Jeśli robisz coś użytecznego (np. przetwarzasz dużo danych), to 100% obciążenie procesora właśnie oznacza, że procesor to my w najbardziej efektywny sposób. Możesz polegać na systemie operacyjnym, aby ustąpić miejsca innym i prawdopodobnie priorytetowym zadaniom.
Użycie funkcji takiej jak uśpienie spowoduje obniżenie zużycia procesora, ale aplikacja będzie wolniejsza. Będzie to wymagało uzyskania kompromisu pomiędzy akceptowalną wydajnością a obciążeniem procesora. Maksymalna prędkość wykonania zostanie określona przez parametr spania, a nie przez prędkość procesora. Ponadto, jeśli problem dotyczy zasilania (to znaczy czasu pracy na baterii), będzie to wymagało przebudzenia procesora (koniec okresu snu) bez żadnej pracy; to jest inne marnowanie zasobów systemowych.
Należy używać obiekt synchronizacji, jeden, że można czekać aż zostanie on zasygnalizował, że sposób, w jaki nie zużywają CPU w ogóle. –
Co to jest "DONE" i co spowoduje, że będzie niezerowe? Przypuszczalnie sensowne jest kontynuowanie przetwarzania, dopóki "check for stuff" nie oceni czegoś, co ustawia DONE jako niezerowe? –
Lasse V. Karlsen: Twoje rozwiązanie wydaje się mieć sens (prawdopodobnie ma to sens, ale po prostu nie mam tej wiedzy). Czy mógłbyś rozwinąć? Czy powinienem badać wątki? (przykład może być miły) Charles Bailey: DONE powinno być int (wykonane zamiast DONE) i zostanie ustawione na 1, gdy użytkownik zrezygnował z aplikacji, na przykład. Przepraszam, jeśli nie potrafię się dobrze wytłumaczyć ... – pwseo