Преимущества использования условных переменных перед мьютексом

Мне было интересно, каково преимущество в производительности использования условных переменных по сравнению с блокировками мьютексов в pthreads.

Я обнаружил следующее:» Без переменных условия программисту потребуется, чтобы потоки постоянно опрашивали (возможно, в критическом разделе), чтобы проверять, выполняется ли условие. Это может потребовать значительных ресурсов, поскольку поток будет постоянно занят этим действием. Условная переменная - это способ достичь той же цели без опроса. "( https://computing.llnl.gov/tutorials/pthreads )

Но также кажется, что вызовы мьютексов блокируют (в отличие от спин-блокировки). Следовательно, если поток (T1) не может получить блокировку, потому что какой-то другой поток (T2) имеет блокировку, T1 переводится в спящий режим ОС и пробуждается только тогда, когда T2 освобождает блокировку и ОС дает T1 блокировку. Поток T1 на самом деле не опрашивает, чтобы получить блокировку. Из этого описания кажется, что нет преимущества в производительности от использования переменных состояния. В любом случае опрос не используется. ОС в любом случае предоставляет преимущество что может обеспечить парадигма условных переменных.

Не могли бы вы объяснить, что на самом деле происходит.

25
задан Abhi 14 February 2018 в 17:53
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: