From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

DQMH Consortium Toolkits Discussions

cancel
Showing results for 
Search instead for 
Did you mean: 

Non-reentrant VI's from functions pallete

Solved!
Go to solution

I was using the VI analyzer on my project and noticed that the NI-CAN library functions are non-entrant by default. Since i'm going to have 12 CAN modules(clones) open/read/wrote to asynchronously, if they are all using the same non-rentrant CAN read function it won't have any real parallelism to it correct? They will have to wait for execution in line. 

 

My question is should I be changing this base NI-CAN functions to shared clone reentrant? And If I do that will that also break any projects that are using the standard non-rentrant CAN functions. Can I unlink the CAN library for just this project and not break the functions pallete CAN library?

0 Kudos
Message 1 of 3
(2,314 Views)
Solution
Accepted by topic author PatrickMiller

I haven't used the NI-CAN library. But I'm guessing that under the hood those VIs are making DLL calls, and perhaps the CAN VIs are non-reentrant because the CAN DLL doesn't support parallel operations? And if that's the case, making the VIs reentrant won't help, because you'll still be serialized at the DLL entry point.

Message 2 of 3
(2,299 Views)

They are making DLL calls to "DLL ncReadNet". 

 

I wonder if the X-NET API can perform the parallelism instead. I'll rewrite the question into the "automotive and embedded networks" section to see if the XNET or older CAN library can be used in parallel. 

Message 3 of 3
(2,295 Views)