02-14-2019 05:06 PM
We use a messaging since that we developed in house which is similar to the AMC design. I haven't used the AMC VIs because we developed our prior to that one and ours has been very reliable. We have not benched marked it but our system is quite chatty and we have not had any problems keeping up. In fact, our messaging system does more since it is built on a publish/subscribe model and it is capable of broadcasting messages to all tasks that subscribe to a particular message. It has been used in many applications, both large and small, and we have yet to run into a performance issue.
02-15-2019 06:56 AM
@abvenk wrote:
AMC was recommended by a CLA a while back. It doesn't seem to enjoy the popularity it deserves, IMHO.
You might want to check out the Delacor Queued Message Handler (DQMH). That team has put a lot of good work into it.
02-15-2019 10:12 AM
Just a note: FGV/AE has the exact same race condition problem Globals have, with the slight caveat that you can make a function that both read and writes somewhat protected in a FGV.
Both are however lossy in that the last function that writes to it is the deciding one.
If you only have one writer both are safe and globals faster. If you have several writers you're a drunk driver; it's not a question of if something bad will happen, it's only a question of _when_.
/Y
02-15-2019 10:24 AM
@Yamaeda wrote:
...
Both are however lossy in that the last function that writes to it is the deciding one.
If you only have one writer both are safe and globals faster. If you have several writers you're a drunk driver; it's not a question of if something bad will happen, it's only a question of _when_.
/Y
Unless the AE is wrapping up a round-robin buffer
I used to make a living writing round-robin buffers until the polymorphic queue was invented (thank you AQ!) which is capable off passing large blocks of data "in-place" making it wicked fast.
But then there was that one application that needed to recover from power failures and resume where it left off. In that case I did use an AE that logged it's internal state to file each time it was invoked to one of two files. It alternated files to cover the situation where the power died as the AE was logging resulting in a corrupted state in the file. In that case the other log file was used to recover. Try to do that with a queue I challenge you!
But that was a very long time ago.
Ben
02-15-2019 10:36 AM
@Yamaeda wrote:
Just a note: FGV/AE has the exact same race condition problem Globals have, with the slight caveat that you can make a function that both read and writes somewhat protected in a FGV.
Both are however lossy in that the last function that writes to it is the deciding one.
If you only have one writer both are safe and globals faster. If you have several writers you're a drunk driver; it's not a question of if something bad will happen, it's only a question of _when_.
/Y
What's AE?
02-15-2019 10:49 AM
@Mark_Yedinak wrote:
We use a messaging since that we developed in house which is similar to the AMC design. I haven't used the AMC VIs because we developed our prior to that one and ours has been very reliable. We have not benched marked it but our system is quite chatty and we have not had any problems keeping up. In fact, our messaging system does more since it is built on a publish/subscribe model and it is capable of broadcasting messages to all tasks that subscribe to a particular message. It has been used in many applications, both large and small, and we have yet to run into a performance issue.
How data-heavy are your messages? Do you send 1D arrays, 2D arrays, clusters, etc? Or just simple booleans or empty messages as notifiers?
02-15-2019 11:16 AM
@abvenk wrote:What's AE?
02-15-2019 11:24 AM
The sizes vary. We have a basic cluster which is a message envelop and then a data portion that can be anything. Some of our messages are the results of a DB query and those are 2D string arrays. Some of the queries result in a large amount of data. Other messages are used for logging data sent/received from the device some of that data is megabytes of data over multiple messages with data blocks of 64K.
02-19-2019 11:12 AM
@crossrulz wrote:
@abvenk wrote:What's AE?
So just another name for FGV.
02-19-2019 11:30 AM
@abvenk wrote:
@crossrulz wrote:
@abvenk wrote:What's AE?
So just another name for FGV.
Not quite. I would rather say that the FGV contains a subset of the functions of an AE. Or that the FGV is a specialized AE that only does two things: read from and write to.