johnflux,
Use TQueue<> for FIFO collections. It is thread-safe and lock and contention free for single-producer-single-consumer. If you have to add to the queue from multiple threads, you can use TQueue<EQueueMode::Mpsc>, which is lock-free for multiple producers, but not contention free (it uses a CAS to synchronize access).
TCircularQueue<> queue has better memory allocation behavior, because it uses a pre-allocated TArray for item storage. However, the number of items you can queue up is limited to the Size you create it with. TQueue has no such limitation. TCircularQueue<> is currently not used in the Engine, but should work. If you encounter any problems, please IM me or post on AnswerHub, thanks!