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



Компьютеры - Rundown protection

01 мая 2011


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



Краткое описание

Объект представляет собой счетчик, на котором возможна операция ожидания, останавливающая поток до тех пор, пока значение счетчика не станет равным нулю.

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

Такой объект тривиально делается из спинлока, целочисленного счетчика и события, но тривиальная реализация использует спинлок, который может стать узким местом. Реализация же, включенная в ядро Windows, является lock-free и не использует спинлок.

Операции

Для объекта существуют операции:

  • Acquire. Увеличивает счетчик на единицу, может отказать.
  • AcquireEx. Увеличивает счетчик на заданное число, может отказать.
  • Release. Уменьшает счетчик на единицу и, возможно, пробуждает ожидание.
  • ReleaseEx. Уменьшает счетчик на заданное число, возможно, пробуждает ожидание.
  • Wait. Останавливает поток, пока счетчик не упадет до нуля. Перед этим ожиданием объект переводится в состояние, когда все последующие Acquire возвращают отказ.


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


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