Критические участки и состояние конкуренции за ресурсы

Критические участки и состояние конкуренции за ресурсы

Ветки кода, которые получают доступ к совместно используемыми данным и манипулируют ими, называются критическими участками (critical region). Обычно небезопасно нескольким потокам выполнения одновременно обращаться к одному и тому же ресурсу. Для предотвращения конкурентного доступа во время выполнения критических участков программист, т.е. Вы, должен гарантировать, что код выполняется атомарно — без перерывов, так если бы весь критический участок был одной неделимой машинной инструкцией. Если два потока выполнения одновременно находятся в критическом участке, то это — ошибка в программе. Если такое вдруг случается, то такая ситуация называется состоянием, конкуренции за ресурс (состояние "гонок", race condition). Название связано с тем, что потоки как бы соревнуются друг с другом за доступ к ресурсу. Следует обратить внимание на то, насколько редко такая ситуация может возникать, — поэтому обнаружение состояний конкуренции за ресурсы при отладке программ часто очень сложная задача, потому что подобную ситуацию очень трудно воспроизвести. Обеспечение гарантии того, что конкуренции не будет и, следовательно, что состояний конкуренции за ресурсы возникнуть не может, называется синхронизацией.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

6.2. Состояние

Из книги Самоучитель UML автора Леоненков Александр

6.2. Состояние Понятие состояния (state) является фундаментальным не только в метамоде-ли языка UML, но и в прикладном системном анализе. Ранее в главе 1 кратко были рассмотрены особенности представления динамических характеристик сложных систем, традиционно используемых для


5.16.2 Поводы для конкуренции

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

5.16.2 Поводы для конкуренции Поводов для конкуренции при выполнении системной функции unlink очень много, особенно при удалении имен каталогов. Команда rmdir удаляет каталог, убедившись предварительно в том, что в каталоге отсутствуют файлы (она считывает каталог и проверяет


Проблема конкуренции и роль синхронизации потоков

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Проблема конкуренции и роль синхронизации потоков Одним из множества "преимуществ" (читайте источников проблем) многопоточного программирования является то, что вы имеете очень узкие возможности контроля в отношении использования потоков операционной системой и


Состояние готовности

Из книги Очень хороший самоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютере и увеличить его возможности автора Колисниченко Денис Николаевич

Состояние готовности Наконец, нужно гарантировать, что при снятии указателя мыши с пункта меню пользователем в первой текстовой панели не останется "старая" подсказка, а будет отображено некоторое "типовое" сообщение (например: "Ожидание действий пользователя"). В текущем


Особо критические ситуации

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Особо критические ситуации Один короткий сигнал при запуске компьютера свидетельствует о том, что каких-либо критических неисправностей не обнаружено. Но если сигналов несколько – значит, программа самодиагностики компьютера обнаружила критическую ошибку, не


Критические участки кода

Из книги Визуальное моделирование электронных схем в PSPICE автора Хайнеманн Роберт

Критические участки кода Инкрементирование N при помощи единственного оператора, например, в виде N++, не улучшает ситуацию, поскольку компилятор сгенерирует последовательность из одной или более машинных инструкций, которые вовсе не обязательно должны выполняться


Мьютексы, критические участки кода и взаимоблокировки

Из книги XSLT автора Хольцнер Стивен

Мьютексы, критические участки кода и взаимоблокировки Несмотря на то что объекты CS и мьютексы обеспечивают решение задач, подобных той, которая иллюстрируется на рис. 8.1, при их использовании следует соблюдать осторожность, иначе можно создать ситуацию взаимоблокировки


14.1. Регулируемые участки

Из книги Удвоение продаж в интернет-магазине автора Парабеллум Андрей Алексеевич

14.1. Регулируемые участки Фрагмент электронной схемы, обладающий переходной характеристикой типа РТ1, является реализацией одного из наиболее распространенных в технике регулирующих алгоритмов. Техническая установка обладает PT-характеристикой, когда возбуждение


Internet Explorer и участки данных XML

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Internet Explorer и участки данных XML В Internet Explorer есть специальный тег <XML>, при помощи которого можно создавать участки (island) XML. Участок XML может содержать либо сам код XML, либо ссылку на XML-документ.Участки XML упрощают загрузку документов XML и XSL, поэтому их стоит здесь рассмотреть.


Зачем выходить из ценовой конкуренции

Из книги Программирование для Linux. Профессиональный подход автора Митчелл Марк

Зачем выходить из ценовой конкуренции Для интернет-магазина ценовая конкуренция – прямой путь к банкротству (насколько быстрый – другой вопрос). Ее могут позволить себе только крупные фирмы за счет своих гигантских оборотов.Нужно понимать, что в любой нише Интернета


Бонус № 3. Принцип УТП, гарантированно повышающий эффективность рекламы независимо от конкуренции

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

Бонус № 3. Принцип УТП, гарантированно повышающий эффективность рекламы независимо от конкуренции В современных условиях интернет-бизнеса трудно предложить потребителю то, чего еще не предлагали ваши конкуренты. С каждым днем все сложнее вырабатывать свою, отличную от


Состояние

Из книги Разработка ядра Linux автора Лав Роберт

Состояние Триггер может быть активным (active) или неактивным (inactive). Запускаются только активные триггеры. См. замечания к ALTER TRIGGER по поводу подробностей деактивации


4.4. Синхронизация потоков и критические секции

Из книги автора

4.4. Синхронизация потоков и критические секции Программирование потоков — нетривиальная задача, ведь большинство потоков выполняется одновременно. К примеру, невозможно определить, когда система предоставит доступ к процессору одному потоку, а когда — другому.


2.7. Состояние TIME_WAIT

Из книги автора

2.7. Состояние TIME_WAIT Без сомнений, самым сложным для понимания аспектом TCP в отношении сетевого программирования является состояние TIME_WAIT (время ожидания). На рис. 2.4 мы видим, что узел, выполняющий активное закрытие, проходит это состояние. Продолжительность этого состояния


Состояние процесса

Из книги автора

Состояние процесса Поле state дескриптора процесса описывает текущее состояние процесса (рис. 3.3). Каждый процесс в системе гарантированно находится в одном из пяти различных состояний. Рис. 3.3. Диаграмма состояний процессаЭти состояния представляются значением одного из


Состояния конкуренции, связанные с таймерами

Из книги автора

Состояния конкуренции, связанные с таймерами Так как таймеры выполняются асинхронно по отношению к выполняемому в данный момент коду, то потенциально могут возникнуть несколько типов состояний конкуренции за ресурсы. Во-первых, никогда нельзя использовать следующий