Can someone explain me any scenario where we can use pass by reference under subprocess ? Is pass by reference valid only for asynchronous type sub process?
Discussion posts and replies are publicly visible
The easiest example I can think of is, in the parent process you have a boolean PV value (initialized to FALSE) which would indicate when processing within a subprocess has completed (or passed a certain point). You pass this boolean value by reference into the subprocess, and when the subprocess sets the value to TRUE instead, the parent process's PV value will also be updated - this could be used to drive a rule node to move some other process forward in the parent process.
Passing by reference is definitely valid for synchronous processes most commonly, though apparently it can also be used for asynchronous process calls (i forget whether i've tried this myself). Also per the documentation, note that values can't be passed by reference from the Start Process node (there aren't even any apparent configuration options close to it).
Honestly I don't see pass by reference used very often with asynchronous processes. The issue is that the processes are entirely independent, so your parent process could complete before the child process updates the variable (or vice versa). If you plan on waiting for a variable value to change in your process, it's probably better to just use a synchronous sub-process.
Do you have a use case in mind where you are planning to use pass by reference?
Peter Lewis said:I don't see pass by reference used very often with asynchronous processes.
Same here - though assuming it actually works, I could see certain use cases where the parent process (assuming it's still running at any given point) could benefit from a bit of visibility into what's currently happening in an async subprocess. I forget if I've ever actually done this, though.
We can get the subprocess value from output variables also right , then whats the use of passing a variable by reference in synchronous mode ?
That is a very good question, isn't it?
Perhaps the only advantage is that you could have a second process thread that can start on the main process while the synchronous process is still running. You'd have that thread triggered by the referenced variable changing. Theoretically that could do something, but I don't think I've ever seen it done.
There's usually never any value add to passing by reference.
Will it ever get deprecated?