\begin{frame}
\frametitle{Стратегии ожидания}
\begin{itemize}
    \item<1->До сих пор функция lock всегда просто ждала в цикле
    \begin{itemize}
        \item<2->такая стратегия называется активным ожиданием;
        \item<3->блокировки, использующие активное ожидание, часто называются
             spinlock-ами;
        \item<3->они "крутятся" в цикле.
    \end{itemize}
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Активное ожидание}
\begin{itemize}
    \item<1->Активное ожидание хорошо работает если:
    \begin{itemize}
        \item<2->потоки не держат блокировку очень долго;
        \item<3->блокировка не находится под сильной нагрузкой;
        \item<4->т. е. если активное ожидание длится недолго.
    \end{itemize}
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Альтернативы активному ожиданию}
\begin{itemize}
    \item<1->Как можно ожидать не активно?
    \begin{itemize}
        \item<2->можно добровольно отдать CPU (переключиться на другой поток);
        \item<3->можно пометить поток как неактивный, чтобы планировщик не
             давал ему время на CPU, пока блокировка не будет отпущена.
    \end{itemize}
\end{itemize}
\end{frame}
