Интернет магазин китайских планшетных компьютеров



Компьютеры - Rundown protection - Требования к вызывающему коду

01 мая 2011


Оглавление:
1. Rundown protection
2. Требования к вызывающему коду
3. Наличие документации от производителя ОС
4. Восстановленный исходный код



  • вызывающий код не должен пытаться уменьшить значение счетчика ниже нуля
  • вызывающий код должен принять меры для недопущения гонки двух Wait, а также повторного вызова Wait на объекте, где он звался ранее. После входа в Wait объект переходит в состояние, когда все Acquire отказывают, но тем не менее гонки между Wait и Acquire, равно как и Acquire после возврата из Wait, разрешены. Чтобы сбросить это состояние и вернуться к тому состоянию, которое было установлено в момент инициализации объекта, нужно вызвать Reinitialize, после этого вызова Acquire начинают работать и разрешено звать Wait. Допускается гонка между Reinitialize и Acquire.

Интересные факты

В ОС Windows Server 2008 R2 вызов Wait разрешен даже на DISPATCH LEVEL, и, так как использование диспетчера на таком уровне запрещено, Wait представляет собой busy loop опроса объекта.

В этом busy loop есть вызовы, используемые в случае, когда ОС бежит на гостевой виртуальной машине, и извещающие гипервизор виртуальных машин о том, что гость вошел в busy loop.



Просмотров: 3236


<<< Проблема ABA
Thread-safety >>>