Concidered potential equipment failures (at this kind of situation, the RS485/232 device wouldn't reply untill the time out), I used several TThreads, each for one RS485 device connection.
If there is a busy waiting loop is in the RS485 driver, then you are out of luck, unfortunately.
Anyway there is something strange: In Windows it is possible to start e.g 22 threads, that factorize a large number, so all threads are always busy, and the windows scheduler gives each thread an equal chance to run - they all run with equal speed.
CPU load is 98% under this circumstances, the fan becomes louder, but the gui surface stays responsive.
According to Taskmanager windows ran 191 processes and 2409 threads, so at average each process has more than 10 threads.
I tried this some minutes before I wrote this, Windows 10 64 bit, AMD Phenom, 6 cores.
So the question is: is this on windows or on something else?
If this is on windows and if the threads have normal priority then under all circumstances then
TComThread.DoRutineSurv()
should get an opportunity to run in each thread.
If you use a hard realtime os, then you must not use busy waiting at all, this will burn CPU time that other threads need and block other threads from running.