Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Prozessorauslastung 100%

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 19.02.2005, 22:45    Titel: Prozessorauslastung 100% Antworten mit Zitat

Hi Leute!

Ich hab ein Problem...

Immer wenn ich ein FB-Prog schreibe, in dem eine DO-LOOP-Schleife läuft (kommt recht oft vor *g*) steigt die Prozessorauslastung sofort auf 100%

Unter VB ist es zwar genauso, aber da kann man einfach per DoEvents ein bisschen bremsen, und die anderen threads auch "zu wort kommen lassen"...

Meine frage also:
kann man (z.B. durch irgendwelche funktionen in der user32.bi, die ich nicht kenne?) die prozessorauslastung in einer do-loop schleife ein bisschen runtersetzen? Auch zu lasten der geschwindigkeit?

thx für eure aws!
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 19.02.2005, 22:49    Titel: Antworten mit Zitat

Hi,

also meine spontane Idee wäre jetzt, dass du einfach den Sleep-Befehl benutzt, der ja (endlich!!) in Milli-Sekunden angegeben wird.

Also z.B. SLEEP 1 reicht vollkommen zwinkern

Viel Erfolg,
Mecki
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 19.02.2005, 22:57    Titel: Antworten mit Zitat

Und das gibt die Kontrolle währenddessen ans system zurück?

naja, wäre auf jeden fall einfach zu benutzen!

Danke für den Tipp!


/Edit:
Scheint zu funktionieren!
Habs ausprobiert. Die Last is zwar immer noch ziemlich hoch (~50%), aber das liegt wohl auch daran, dass ich mit 400 MHz sowiso keine recht hohe leistung hab...

auf jeden Fall ist jetzt der Leerlaufprozess der mit dem höchsten rechneranteil *g*
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.


Zuletzt bearbeitet von Dusky_Joe am 19.02.2005, 23:01, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 19.02.2005, 22:59    Titel: Antworten mit Zitat

Hi nochmal lächeln

Also bei mir funktioniert das - einige neue Compiler machen das bei LOOPs glaub ich auch automatisch, dass sie so eine Kontroll-Übergabe ans System einbauen - kann aber auch sein, dass ich mich da jetzt irre grinsen
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2507
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 20.02.2005, 10:14    Titel: Antworten mit Zitat

In sequentiell orientierten Programmiersprachen gibt es normalerweise immer irgend eine Funktion, um den Prozess schlafen legen können.

z.B. auf einem UNIX/Linux ruft man select() mit all denjenigen File Descriptoren auf, bei welchen man auf eine Eingabe wartet. Früher bei BlitzBASIC auf einem Amiga gab es WaitEvent, wo man eine Maske noch mitgab, welche Ereignisse den Prozess wieder aufwecken sollen.

Bei meinem kurzen FreeBASIC-Ausflug war ich übrigens auch so etwas am Suchen, konnte es aber nicht finden. Falls es dies noch nicht gibt, wäre dies natürlich ein dringender Verbesserungsvorschlag ans FB-Programmierteam!

Wichtig: Ein sauberes select()/WaitEvent darf nicht mit periodischem SLEEPen verglichen werden; im ersten Fall gibt es zum einen keinen pulsierenden Kurz-Rechenzeitverbrauch und zum anderen wird der Prozess sofort wieder geweckt, sobald z.B. die Netzwerkkarte ihren Interrupt aufgrund des eingetroffenen TCP/IP-Pakets verarbeitet hat, was bei Echtzeitanwendungen wichtig ist.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 20.02.2005, 10:52    Titel: Antworten mit Zitat

@dreael: War ja jetzt auch nur ne spontane Überbrückungsmöglichkeit von mir, um diesen Missstand zu beheben zwinkern

Ich werde das Problem so bald wie möglich an V1ctor oder Lillo weiterleiten.

Grüßle,
Mecki
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz