From the Real-Time FIFO FAQ:
What is the difference between RT FIFOs and Queues?
Functionally, RT FIFOs and LabVIEW Queues are both First-in, First-out buffers. However, the following are the major differences between them:
- RT FIFOs execute deterministically in time-critical code and LabVIEW Queues do not. This comes from the fact that Queues use blocking calls when reading/writing to the shared resource while RT FIFOs use non-blocking calls.
- RT FIFOs are fixed size while the queues grow as elements are added to them.
- RT FIFOs will execute the code even if there are errors at input. They can (and will) produce new errors and propagate existing errors.
- Queues work with any data type, while the data types that can be used with RT FIFOs are limited. Usually any data type that involves additional memory allocations cannot be used with RT FIFOs in order to preserve determinism.
Does that answer your question? The RT FIFOs are particularly good for moving data between loops deterministically (say from a data-acquisition loop at high speed to a non-deterministic loop that processes it). If you're using your queue like a global variable to store a single element then there's less of an advantage to the RT FIFO.