100 % CPU-Auslastung

Still in use?

Moderator: Moderatoren

Antworten
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1855
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Kontaktdaten:

100 % CPU-Auslastung

Beitrag von Rolf Ramacher » Do, 27. Jun 2013 8:44

Ich habe noch ein paar alte Clipperprogramme die unter Win7 32-Bit laufen. diese ziehen aber die CPU auf 100 %. Hat jemand einen tipp, wie ich diese ausschalten, bzw. reduzieren kann.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7284
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: 100 % CPU-Auslastung

Beitrag von Tom » Do, 27. Jun 2013 9:07

Herzlich,
Tom

georg
Foren-Administrator
Foren-Administrator
Beiträge: 2200
Registriert: Fr, 08. Feb 2008 21:29

Re: 100 % CPU-Auslastung

Beitrag von georg » Do, 27. Jun 2013 9:10

Hallo, Rolf -


schau mal in die GetSys rein. Da wirst meist mit Inkey() operiert, und das zieht die CPU runter (bzw. die Auslastung hoch), da Clipper-Programme nie was davon gehört haben, dass auch andere die CPU brauchen könnten.

Du solltest das auf Inkey(0.1) ändern (siehe auch ftp://ftp.alaska-software.com/acsn/cliputil.zip über die DBU/RLU Portierung, da wird auch darauf eingegangen).
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.

Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 118
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen

Re: 100 % CPU-Auslastung

Beitrag von BJelinek » Do, 27. Jun 2013 10:13

Hallo Rolf,
ich benutze die oslib.lib 1.06 und die Blinker 7 Function BLICPUREL()
gemeinsam.

Code: Alles auswählen

FUNC BFBInkey(xx)
LOCAL nKey := 0
if    xx == Nil .OR. valType(xx) <> "N"
 BFBYield(3)        // OL_Yield()
 nKey := INKEY()
elseif xx <> 0
 BFBYield(3)        // OL_Yield()
 nKey := INKEY(abs(xx))
else
 do while ( ( nKey := INKEY(.1) ) == 0 )
  BFBYield(3)        // OL_Yield()
 enddo
*INKEY(0)
endif
RETURN nKey

FUNC BFBYield( nModus )
static lMitOsLib
local xRet := NIL
if lMitOsLib = nil
 BLICPUREL()
 lMitOsLib := .t.
 if .not. BFBWINNT()
  lMitOsLib := .f.
 endif
 if lMitOsLib
  privat cWAWISETI,TT
  cWAWISETI := "WAWI_SET.INI"
  if file(cWAWISETI)
   TT := memoread(cWAWISETI)
   TT := STRTRAN(TT," ")
   TT := upper(TT)
   IF "BFBCPUMIN=N" $ TT
    lMitOsLib := .f.
   endif
  endif
 endif
 IF lMitOsLib
  IF upper(GETE("BFBCPUMIN"))="N"
   lMitOsLib := .f.
  endif
 endif
endif
if lMitOsLib
 if     nModus = 0
  OL_AutoYield( .f. )
 elseif nModus = 1
  OL_AutoYield( .t. )
 elseif nModus = 3
  xRet := OL_Yield()
 endif
endif
return xRet
Vor dbedit() und achoise() ein bfbyield(1) und danach wieder aus bfbyield(0)

INKEY wird durch bfbinkey ersetzt

Beim Start der der DOS-Box weise ich Ihr abwechselnd eine CPU zu (Wenn mehrere vorhanden).
Verteilt die Last wenn man das Programm mehrfach öffnet.
Gruß
Bernd

Antworten