Hallo,
Ist keine Soundkarte vorhanden, verwendet die Funktion Beep() die ganze CPU-Leistung nur dafür, den Lautsprecher 20 ... 20000 mal je Sekunde möglichst synchron ein- und auszuschalten. Wärend dieser Zeit ist das System praktisch ausgelastet. Erst danach wird die Funktion wieder verlassen.
das kann man so nicht ganz stehen lassen. Diese 20.000 Oszillationen pro Sekunden entsprechen eine Frequenz von 20 kHz. Moderne Prozessoren haben mittlerweile wohl weit über 200 MHz. So eine Frequenz lastet keinen Prozessor aus!
Was wahrscheinlich damit gemeint ist, ist dass die Windows Message Queue nicht abgearbeitet wird, solange der Mainthread deines Programmes mit dieser Funktion beschäftigt ist. Beschäftigt heißt in dem Fall aber nicht, dass dein System ausgelastet ist, sondern leidglich, dass dein Programm auf das Ende des Beeps
wartet!
Soweit ich weiß - das ist aber wirklich nur Halbwissen - ist der Lautsprecher aber auch über einen extra Prozessor Timer angebunden, um asynchrones Abspielen zu ermöglichen. Sonst hätte man damals, als CPUs wirklich nur 200 kHz hatten, kaum etwas sinnvolles mit Sound und Grafik machen können. Soll heißen, dass du mit Assembler die Frequenz einstellen kannst, anschließend den Lautsprecher auf "ein" schaltest und dein Programm dann dennoch weiterlaufen kann.
Liebe Grüße,
Valentin