AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sleep ohne Win32 API

Ein Thema von sniper_w · begonnen am 15. Jul 2005 · letzter Beitrag vom 16. Jul 2005
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#1

Sleep ohne Win32 API

  Alt 15. Jul 2005, 18:52
Hi.
Kann mir jemand sagen, ist es möglich eine Sleep Procedure zu implementieren, die das Gleiche macht, wie Sleep von Win32API ?
Dabei ist zu beachten dass ich keine while oder repeat Schleife im Kauf nehmen darf, weil die dann die CUP Auslastung auf 100% hochtreiben.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: Sleep ohne Win32 API

  Alt 15. Jul 2005, 19:12
http://www.delphipraxis.net/internal...?p=52152#52152

eine Procedure von Hagen:
Delphi-Quellcode:
procedure Delay(MSecs: Integer);
var
  Tick: DWord;
  Event: THandle;
begin
  Event := CreateEvent(nil, False, False, nil);
  try
    Tick := GetTickCount + DWord(MSecs);
    while (MSecs > 0) and
     (MsgWaitForMultipleObjects(1, Event, False, MSecs, QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
      Application.ProcessMessages;
      MSecs := Tick - GetTickcount;
    end;
  finally
    CloseHandle(Event);
  end;
end;
CPU-Auslastung < 1 % (nicht auf einem 386 getestet )
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Sleep ohne Win32 API

  Alt 15. Jul 2005, 19:24
Danke, geht auch wunderbar. Eigentlich wollte ich etaws in ASM, also nicht OP bezogen...
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Sleep ohne Win32 API

  Alt 15. Jul 2005, 19:30
Zitat von sniper_w:
Kann mir jemand sagen, ist es möglich eine Sleep Procedure zu implementieren, die das Gleiche macht, wie Sleep von Win32API ?
Das Gleiche wie die der WinAPI wird nicht gehen, da diese dem Betriebssystem mitteilt, dass Dein Programm für x Millisekunden nicht an einem "Quantum" (Prozessorzeitanteil) interessiert ist und dieses damit auch keine erhält. Alle anders implementierten Lösungen erzwingen weiterhin Processorzeit auf die eine oder andere Art und Weise.

Was spricht eigentlich gegen das Original

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Sleep ohne Win32 API

  Alt 15. Jul 2005, 20:43
Zitat:
Was spricht eigentlich gegen das Original
Ich mache hier mein eigenes OS (ist seehr aufregend), und natürlich habe keine API zur verfügung...
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Sleep ohne Win32 API

  Alt 15. Jul 2005, 21:44
Zitat von sniper_w:
Zitat:
Was spricht eigentlich gegen das Original
Ich mache hier mein eigenes OS (ist seehr aufregend), und natürlich habe keine API zur verfügung...
Und das ohne Vorwarnung, ich hätte mich beinahe an meinem Brötchen verschluckt.

Rat mal was das: MSDN-Library durchsuchenMsgWaitForMultipleObjects ist? Hagens Funktion hat vier mal soviel API Aufrufe und dazu kommt noch ein VCL Methodenaufruf.

Du schuldest mir übrigens eine Tischkante.

Mal aus Interesse: Was für Systemcalls hast du denn schon implementiert? Da du nach MSDN-Library durchsuchenSleep fragst, müsste dein Betriebssystem ja schon Multitasking unterstüzen.

Mal was zum Lesen:
http://www.amazon.de/exec/obidos/ASIN/3827370191/delphipraxis-21
Aber vorher wäre wohl das sinnvoll:
http://www.amazon.de/exec/obidos/ASIN/3423362995/delphipraxis-21
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#7

Re: Sleep ohne Win32 API

  Alt 15. Jul 2005, 22:33
&
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Sleep ohne Win32 API

  Alt 15. Jul 2005, 22:51
@negaH: bitte keine OT Posts .

Lucky, bist du lustig oder was ?
Entweder habe ich mich fasch ausgedrückt, oder du traust mir zu viel.

Wie auch immer, es geht um ein Program, ein DatenbankServer, das im RealMode arbeitet. Sobald man das Rechner einschaltet, ist man in meinm Programm gelandet. So, jetzt ist das Problem, dass es 100% an CPU Leistung nimmt , wenn es nichts macht, d.h. wenn es auf Mouse oder Tastatur wartet. Wie könnte man es vorübergehend "einschlaffen" ?
Es tut mir leid dass ich mich falsch ausgedrückt habe.

EDIT
Zitat:
Rat mal was das: Suche im Microsoft Developers NetworkMsgWaitForMultipleObjects ist? Hagens Funktion hat vier mal soviel API Aufrufe und dazu kommt noch ein VCL Methodenaufruf.
Das ist mir von vornerein klar, ich war einfach nett zu der Person, die mir helfen wollte.

Kaffe krigst du schon, wenn wir uns treffen .
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Sleep ohne Win32 API

  Alt 15. Jul 2005, 23:03
Zitat von sniper_w:
Entweder habe ich mich fasch ausgedrückt, oder du traust mir zu viel.
Zitat:
Ich mache hier mein eigenes OS
Was gibt es da falsch zu verstehen? Ein Betriebssystem ist für mich kein Datenbankserver.

Zitat:
ein DatenbankServer, das im RealMode arbeitet. Sobald man das Rechner einschaltet, ist man in meinm Programm gelandet.
Also doch ein Betriebssystem. Wenn dein, nennen wir es mal Programm, vom BIOS geladen wird und sonst nichts da ist, dann braucht es zu mindest ein Dateisystemtreiber, da es keine Schicht darunter gibt, auf die du zurückgreifen kannst, du bist ja die unterste Schicht selber, ergo musst du einen Dateisystemtreiber implementiert haben, es sei denn du hast ihn bei einem OpenSource OS geklaut. Dann brauchst du ein Speichermanagment, du musst ja was im Speicher ablegen und auch wiederfinden können. Dann werden für die Ein- und Ausgaben Treiber benötigt. Da es sich um einen Sever handelt, muss er auch irgendwie kommunizieren können, das heißt, du brauchst einen Netzwerktreiber mit einem Protokoll, was die Clienst verstehen, also eine TCP/IP Stack oder so was. Und da wären wir schon bei einem Betriebssystem. Wenn es auch nur ein kann, als Datenbankserver fungieren.
Aber da dein Programm sowoieso das einzige ist, was auf dem System läuft, was machst du dir Sorgen um die CPU Auslastung? Es gibt doch keinen anderen Prozess, der die Ressourcen benötigen könnte?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#10

Re: Sleep ohne Win32 API

  Alt 15. Jul 2005, 23:13
Zitat von Luckie:
Es gibt doch keinen anderen Prozess, der die Ressourcen benötigen könnte?
Vielleicht hat er Angst, das seine CPU zu heiß läuft?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 5  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz