I thought that the only "paused" thread while calling Synchronize, was the one which called Synchronize. None of the others :
if I have 3 Threads named MyThread1 to MyThread3 running, and MyThread2 calls
Synchronize (MainForm.UpdtateProgresss), the MyThread2 only goes into and idle (suspended) state, then the MAIN Thread of the TApplication calls the UpdtateProgress Procedure... but ! --> and I checked with GDB (debugger windows showing threads) MyThread1 and MyThread3 still are awake and working, avoiding data computing bottlenecks.
Finally that is a very productive and nice feature, a feature that I was expecting to work like that.
the Thread calling Synchronize (MyThread2) pauses -giving handshake to TApplication's Main Thread- , none of the others pause