Du nimmst eine Queue-Klasse (weiß nicht ab wann es TQueue im Delphi gibt), baust dort eine CriticalSection ein (TCriticalSection oder direkt über die
WinAPI), sicherst alle Zugriffsmethoden damit ab und fertig.
Bezüglich der CS gibt es ausreichend Beispiele zu finden
und eine "threadsichere Queue/Stack/List" gibt es hier auch zu finden (ist ja alles das Gleiche).