Совместно используемые ресурсы требуют защиты от одновременного доступа, потому что, если несколько потоков выполнения обращаются к данным и манипулируют ими одновременно, потоки могут перезаписывать изменения друг друга или получать доступ к данным, пока они находятся в несогласованном состоянии.Одновременный доступ к совместно используемым данным - это рецепт нестабильности, который часто оказывается очень сложным для отслеживания и отладки - очень важно получить его сразу же [1]
Потоки могут использовать следующие два инструмента для синхронизации своих действий:мьютексы и условные переменные [2]
Мьютексы (сокращение от взаимного исключения) позволяют потокам синхронизировать использование общего ресурса, так что, например, один поток не пытается получить доступ к общей переменной нав то же время, когда другой поток изменяет его.
Переменные условия выполняют дополнительную задачу: они позволяют потокам сообщать друг другу, что общая переменная (или другой общий ресурс) изменила состояние.
Адаптированоиз:
[1] Любовь, Р. (2005).Разработка ядра Linux, второе издание.
[2] Kerrish, M. (2010).Интерфейс программирования Linux.