Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie
(Moderator)

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

AW: LeaveCriticalSection: Warum das nachfolgenden sleep(0)?

  Alt 30. Apr 2015, 22:23
Boah. Ihr wollt Sachen wissen. Ich glaube, das habe ich noch mit einer ID geschrieben, wo man den Quellcode noch mir Kreide auf Schiefertafeln kratzen musste. Und unter einem Betriebssystem, welches mittlerweile wohl im Museum ist.

Wie schon richtig bemerkt sorgt Sleep(0) dafür, dass der Thread den Rest seiner von der CPU zur Verfügung gestellten Zeitscheibe nicht mehr nutzt. Statt nach 20 ms (?) (XP) verlässt er die Zeitscheibe schon nach 10 ms, je nach dem wo er ist, wenn das Sleep(0) kommt. Dann kommt der nächste Thread dran. Es wird also zu dem nächsten Thread "geswitch".

Und ich tue jetzt einfach mal so, als wüsste ich, was ich damals getan habe. Der Thread verlässt die CriticalSection. Er ist also fertig mit dem, was er machen soll. Ergo braucht er auch keine Rechenzeit mehr. Also eigentlich nur eine winzige, vernachlässigbare Optimierung. So würde ich mir das jetzt, nach den Äonen die es das Tutorial gibt, erklären.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat