LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Dequeue Element always shows a buffer allocation even though it doesn't perform one

The buffer allocation IS showing a request for space.  The request for space happens for the first element and is reused for the following elements and no copy is made.
Regards,

Jon S.
National Instruments
LabVIEW NXG Product Owner
0 Kudos
Message 11 of 13
(363 Views)

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.

Message 12 of 13
(360 Views)

Great thanks for this, I'll digest the FAQ today and decide which is best for my application.

 

0 Kudos
Message 13 of 13
(355 Views)