Hi,
I'm building a software program based on plugins.
All these plugins interact with DIOs.
When the plugin is loaded in memory, it loads its configuration and create a task to control/read DIOs port on C-series modules (9476 and 9425) placed in a cDAQ chassis.
If the task pointing on a module is already built, plugins reuse the already created task instead of creating a new one. All DIOs tasks are not synchronized on any clock, they only return the port state when necessary (software timed).
Actions on DO are always the same : Read current DO port state, apply mask and pattern on the read value and apply new calculated state on the DO port.
According to the plugins used, it might be possible that several of them will want to access the same DO port of a module at the same time. Is there something like a round-robin mechanism which handles this kind of situation ? Or should I create a semaphore to reserve the access the DO port one plugin after the other ? If an explicit semaphore is required, can it be embedded in the DAQmx task (or specific DAQmx function) or should I use standard semaphores available in LabVIEW ?
Thank you for your help !