I like Channels. They are very useful addition to the LabVIEW toolkit. I like that there are several kinds of them supporting different behavior types. And I think I found a missing one that would be useful. This is the specification:
1. The writer never blocks. Data may always be written to the writer, and it is enqueued.
2. Data are never lost. Anything written remains enqueued until read.
3. The reader never blocks. If there is nothing new in the queue, the reader continually returns the last state that was read from the queue. (Or an initial default value.)
4. Multiple writers and a single reader are to be expected; if necessary, the logic of the user interface should prevent multiple writers from interleaving.
I found this protocol useful in commanding a device via the Ethernet/IP protocol. It passes commands from various subroutines to the device I/O loops in the main program, which must never block.
I had to build this out of a queue and a shift register. I think. If there is actually a Channel type that would have done the trick, please let me know.
(Attached example: click the Go button repeatedly to ssend new data. The stable value is always 27, illustrating the ability to pass a sequence of commands rapidly but then and at a stable "idle" state.)