11-23-2015 04:09 PM
Some channels allow forkings. Others do not. This one does not.
11-23-2015 05:09 PM
@sth, Did any of the previous mockups try for an even MORE 3D effect like this?
I do understand the "excessive noise" problem mentioned by Jeff, but this WOULD enable distinguishing between a psudo-tunnel and a channel wire that runs underneath a structure.
11-23-2015 05:22 PM
At this point, we have made the decision to stick with the there-but-not-there tunnels for LV 2016 first beta. We will have a whole lot more diagrams in the form of shipping examples and templates for users to look at with 2016. We'll see what kind of feedback comes in at that point. Between first and second beta we can make a graphics change if the beta community pushes for it.
At some point, you can go to ni.com/beta to request to be in the beta program. I do not know when sign up opens... LabVIEW 2016 is not currently in the product lists. I bet January.
11-23-2015 07:36 PM
Not forking, if I understand correctly what you are calling forking. Two independent sources, call then #1 and #2 both are fed different data. Loop A has these two writers. Loop B has one reader. Loop C has another reader.
Is this somehow syntactically wrong. I don't get a broken arrow until I try to run it.
11-24-2015 09:13 AM
There is no fork in your picture. A fork is just like any other wire forking. You can have as many independent wires between two loops as you want -- although I strongly recommend you never have more than one, just like I strongly recommend that you never use more than one refnum for communication [special case for Events because they all go into the same event queue] between two loops. Any time you have multiple communication paths between two loops, your probability of having a race condition somewhere in your code shoots up to near certainty -- I've been actively tracking that assertion for years in user code. It's why the Actor Framework documentation strongly recommends that you have no communication (notifiers, events, functional globals, globals, shared variables, etc) between two actors other than the actor's Enqueuer reference.
Here's a screen shot from the tutorial I've been working on for LV 2016.
11-24-2015 09:15 AM
The picture you drew should not be broken. I'll look into it.
11-24-2015 09:17 AM
It is not broken in LV 2016.
11-24-2015 09:59 AM
AristosQueue wrote:
There is no fork in your picture. A fork is just like any other wire forking. You can have as many independent wires between two loops as you want -- although I strongly recommend you never have more than one, just like I strongly recommend that you never use more than one refnum for communication [special case for Events because they all go into the same event queue] between two loops. Any time you have multiple communication paths between two loops, your probability of having a race condition somewhere in your code shoots up to near certainty -- I've been actively tracking that assertion for years in user code.
Agreed there is no fork. That was why I was thinking it should be legitimate. In this case, I can make the diagram and the run arrow is "not broken". As soon as I click the run button it changes to broken and tells me a compiler error. Glad it is fixed in 2016!
Now on this multiple loop question. I sort of like an architecture where I have a single data collection loop and then parse data out to other loops for processing, decision making, archiving, displaying, etc. This is a producer - multiple consumer loops. I think this avoids race conditions inherently as long as I have a single channel between the producer and each consumer. Would that be a fair statement?
I suppose I could do this with a single channel that has all the data and forks to multiple consumers, each consumer can use the data it needs and discard the rest? It seems to be a less intuitive architecture where I parcel out the data specific to each loop.
Parenthetically, in looking at the example code, is the "Stream Channel" a 2016 thing or is it another added channel like the AQ Favorite.
11-24-2015 10:11 AM
Your diagram is not wrong. It's our bug. It should be fixed in 2015 SP1. Try turning off debugging-- that should be a workaround. The bug is an artifact of an early version of our compile transform.
11-24-2015 10:18 AM