What does your thread do?

Sleep uses milliseconds so it's not CPU frequency dependant. Application.Processmessages should be accesible trough the 'forms' unit(as Application is a global variable in VCL programs).

If your thread does a lot of waiting or synchronizing then you should probably use a mutex instead. If it does timeslice updating then sleep is the most optimal solution