Что именно происходит, когда pthread_mutex_t ДЕЙСТВИТЕЛЬНО достигает блокировки сразу? Это сверхбыстрый процесс (всего несколько циклов ЦП) или система должна вызвать какой-то медленный метод ОС, прежде чем выполнение сможет продолжиться?
Я создаю систему реального времени, которая должна быть максимально быстрой, поскольку она обрабатывает звук в реальном времени и не должна зависать, когда это возможно. Эти мьютексы будут проверяться множество раз в секунду. Вот почему я спрашиваю. Другой альтернативой было бы использование std::atomic_flag:
Код: Выделить всё
while (m_atomic_flag.test_and_set());
Итак, в моем случае мне действительно нужно, чтобы блокировка происходила немедленно в течение нескольких циклов ЦП, когда она доступна. Если процессу необходимо дождаться блокировки, это может занять столько времени, сколько необходимо процессу. Поэтому передача должна быть максимально быстрой.
Мне безопасно использовать pthread_mutex_t или мне следует просто использовать std::atomic_flag?
Я пробовал читать Для критических разделов - когда использовать std::mutex или std::atomic_flag? но это не совсем подходит для моего случая реального времени.
Подробнее здесь: https://stackoverflow.com/questions/798 ... mmediately
Мобильная версия