|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 19.02.2005, 22:45 Titel: Prozessorauslastung 100% |
|
|
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 |
|
|
Mecki Igel
Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 19.02.2005, 22:57 Titel: |
|
|
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 |
|
|
Mecki Igel
Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2522 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 20.02.2005, 10:14 Titel: |
|
|
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 |
|
|
Mecki Igel
Anmeldungsdatum: 10.09.2004 Beiträge: 985 Wohnort: Niederbayern
|
|
Nach oben |
|
|
|
|
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.
|
|