Scrapy BaseSpider:Как это работает?

Основной принцип для синхронизации без блокировок - это:

  • каждый раз, когда Вы читаете структуру, Вы следуете за чтением с тестом, чтобы видеть, была ли структура видоизменена, так как Вы запустили чтение и повторную попытку, пока Вы не преуспеваете в том, чтобы читать без чего-то еще приход и видоизменение, в то время как Вы делаете так;

  • каждый раз, когда Вы видоизменяете структуру, Вы располагаете свой алгоритм и данные так, чтобы был единственный атомарный шаг, который, если взято, заставляет все изменение становиться видимым к другим потокам и вещам расположения так, чтобы ни одно из изменения не было видимо, если тот шаг не сделан. Вы используете любой lockfree атомарный механизм, существует на Вашей платформе для того шага (например, сравнивать-и-устанавливать, load-linked+store-conditional, и т.д.). На том шаге необходимо тогда проверить, чтобы видеть, видоизменил ли какой-либо другой поток объект, так как операция мутации началась, фиксация, если это не имеет и запускается, если это имеет.

существует много примеров структур без блокировок в сети; не зная больше о том, что Вы реализуете и на том, какая платформа трудно быть более конкретным.

5
задан Zeynel 27 November 2009 в 00:15
поделиться