Usually you want to avoid locks in real-time audio and we don’t provide any way of blocking the mixer thread. As far as the latency with your current implementation goes, how is this shared buffer synchronized between the two system’s dsp callbacks? Are there any locks in there or is the shared buffer using a circular-buffer / some lock-free alternative?
EDIT: Amending my answer, you can block the mixer thread with System::lockDSP
/System::unlockDSP
but that probably won’t help with your latency issues. Syncing two systems can be problematic due to clock drift if the two devices separate hardware interfaces. In previous discussions there was a suggestion to delay the output buffer by one buffer to compensate for latency- this might be worth a shot in your case?