Hallo Folks, ich brauch mal eure Hilfe. Der folgende Code wird im Thread ausgeführt und soll alle 20ms UDP Frames (sendFrame) senden. Beim MAC OS X liegt die CPU Auslastung beim ständigen Senden unter 20% und die Frames werden genau alle 20ms gesendet. Somit super.
Die gleiche Routine verursacht unter WindowsXP/7 eine CPU Auslastung von 90%. Dafür habe ich dann eine Pause von 5ms eingeführt me.sleep(5) und die CPU Last hat sich dann bei WindowsXP/7 unter 20% eingestellt. Soweit gut. Nur leider hilft das nicht bei Ubuntu. Auch der me.sleep(5) bringt nur sehr wenige Prozentpunkte. Ich habe dann den Thread mit einem Timer kombiniert (siehe unten 2. Ubuntu), aber das brachte auch nur wenige Prozentpunkte. Also, unter 70% kriege ich die CPU Auslastung nicht. Nur mit einem Timer arbeiten ist nicht möglich, da der Timer im ms Bereich unter RB sehr ungenau ist. Daher die Lösung mit dem Thread. Ich habe auch mit sleepMBS getestet, aber das brachte auch nichts, bzw. die CPU Last ist noch höher gegangen. Kann wer helfen? Gruß Klemens 1. MAC OS X und WindowsXP/7: dim lastWait, delta, tx as Double while window1.threadStart=true delta = Microseconds if lastWait <= delta then lastWait = delta + (20*1000) SendFrame // frames senden #if TargetWin32 then me.sleep(5) #endif end if wend 2. Ubuntu: dim lastWait, delta as Double while window1.threadStart=true delta = Microseconds if lastWait <= delta then lastWait = delta + (20*1000) SendFrame // frames senden Timer_Wait.Period = 15 //der Timer führt nach 15ms ein thread1.resume aus Timer_Wait.Enabled=true Timer_Wait.Reset me.Suspend end if wend