Книга: Разработка ядра Linux
Критические участки и состояние конкуренции за ресурсы
Ветки кода, которые получают доступ к совместно используемыми данным и манипулируют ими, называются критическими участками (critical region). Обычно небезопасно нескольким потокам выполнения одновременно обращаться к одному и тому же ресурсу. Для предотвращения конкурентного доступа во время выполнения критических участков программист, т.е. Вы, должен гарантировать, что код выполняется атомарно — без перерывов, так если бы весь критический участок был одной неделимой машинной инструкцией. Если два потока выполнения одновременно находятся в критическом участке, то это — ошибка в программе. Если такое вдруг случается, то такая ситуация называется состоянием, конкуренции за ресурс (состояние "гонок", race condition). Название связано с тем, что потоки как бы соревнуются друг с другом за доступ к ресурсу. Следует обратить внимание на то, насколько редко такая ситуация может возникать, — поэтому обнаружение состояний конкуренции за ресурсы при отладке программ часто очень сложная задача, потому что подобную ситуацию очень трудно воспроизвести. Обеспечение гарантии того, что конкуренции не будет и, следовательно, что состояний конкуренции за ресурсы возникнуть не может, называется синхронизацией.
- Русскоязычные ресурсы
- Приложение 2 Интернет-ресурсы
- Приложение 2 Интернет-ресурсы
- Приложение 3 Интернет-ресурсы
- Опыт конкуренции в России: причины успехов и неудач
- Зарубежные интернет-ресурсы по XSLT
- 22.1. Ресурсы в Web
- Темы как ресурсы
- 1.4.3 Лабораторная работа #4 "Программы и их ресурсы"
- Состояния конкуренции, связанные с таймерами
- Ссылки на ресурсы Internet
- Критические участки кода