LabVIEW Idea Exchange

cancel
Showing results for 
Search instead for 
Did you mean: 
altenbach

The "Zero Frame Flat Sequence", aka. "Synchronizer Bar"

Status: Declined

In the G Language, this is what the Flatten Sequence structure is for.  Not going to add a second way to do this.

Sometimes we have a need to do some mild synchronization between otherwise parallel tasks. Typically we would use a flat sequence (but there are also exceedingly fancy tools such as "Rendezvous"). Even a flat sequence is often overkill for the given situation: It is a 2D object with it's own diagram and input and output tunnels. We need to decide what should be inside and what should be outside.

 

I suggest to extend the idea to a 1D object: The "Synchronizer Bar". It is basically a flat sequence with zero frames, condensed to a single vertical line (Maybe we could even allow kinks in it???).

 

The function is very simple and immediately intuitive (as anything in LabVIEW should be!!) and can be described in a single sentence:

 

"No data can leave any of the tunnels until all tunnels in the structure have received data."

 

Ideally, we should be able to "free-hand draw" this structure interactively with the mouse and a tunnel will be automatically generated for each wire we cross.

 

Here is a dumb (but illustrative) example (ignore the code itself). That's how it could look like.

(At the moment I simply merged the edges of a flat sequence, but I am open for prettier suggestions ;))

 

ZFF.png

 

 

Overall, it should be closely related to the flat sequence and include certain right-click actions (e.g. Add frame before/after, which would expand it into a flat sequence).

25 Comments
X.
Trusted Enthusiast
Trusted Enthusiast

@Hurrock: Brilliant! Dummy Expandable Rendez-Vous Node... I'll vote for this version.

altenbach
Knight of NI

Hurrok wrote: > I think this is a great idea, but i would modify it a little bit, just like this:

 

wait_for_sync.png

 

This is no longer a structure, but a real function with seperate input and output tunnels and with a width comparable to a narrow single-frame flat sequence (nothing gained, spacewise). I would recommend you post that as a seperate idea, because it is very different in spirit and intended usability. It needs at least twice as many clicks than my original idea (plus a resize!) to tie a datasstream into the data depedency and is thus less efficient.

Since the terminals spacing is fixed, it will typically introduce additional wire bends (as you already illustrate in you image ;)).

LukeASomers
Member

I love the original idea. Super simple, intuitive, useful.

EricR
Active Participant
Status changed to: Declined

In the G Language, this is what the Flatten Sequence structure is for.  Not going to add a second way to do this.

Eric Reffett | Director, Product Management | 1.512.683.8165 | ni.com
altenbach
Knight of NI

A mild version of this idea is available as "synchronize dataflow.vim" in the synchronization palette of LabVIEW 2019.

 

syncIt.png

 

(This is slightly less functional compared to the original idea because it is limited to four inputs and the given connector spacing will often require wire bends. My original idea wold have allowed an unlimited number of connectors at any desired spacing.)