Skip to main content
Participant
June 24, 2024

Slow C++ synchronization primitives on Quest

Hello all,

I've recently found that some C++ synchronization primitive operations (specifically std::condition_variable::notify_one() and std::counting_semaphore<>::release()) are very slow on Meta Quest. These functions are taking several milliseconds in some cases, whereas I would expect them to only take microseconds. Other operations (e.g. mutex locking) are fine, and have no performance issues. But these two specific examples (cond vars and semaphores) are very slow. NB: The specific operations I've mentioned are ones that are not expected to block. Obviously waiting on a cond var may be slow, or acquiring a semaphore may be slow. But notifying a cond var or releasing a semaphore should be very fast. Has anyone else experienced this? Does anyone know why this might be happening?


Thanks!