Plugin order of execution
I'm trying to use Boost IPC mechanisms to communicate between an external application and some gazebo plugins. I'm not using the transport layer because speed is critical for my application, and IPC mechanisms give me about a 2x increase in simulation speed over using topics. We're going to be running many, many thousands of simulations inside a Monte Carlo method, and a 2x speed increase will potentially shave days off the running time.
Getting the IPC synchronization correct for this is tricky, of course, and I'm running into issues that have to do with the order in which the plugins are executed. My questions:
1) is there any way to specify an order of execution for multiple plugins?
2) Do the plugins execute in the same thread? If I (for instance) block on a mutex inside one plugin, will the entire simulation halt, or do the other plugins run?