Очередь на блокировку продолжает расти

Рейтинг самых лучших платформ с бинарными опционами за 2020 год:
  • БИНАРИУМ
    БИНАРИУМ

    1 место, лидер рынка на протяжении 4х лет! Бесплатное обучение для новичков. Заберите свой бонус за регистрацию:

Что делать, если вас заблокировали на Яндекс.Район?

Что же делать, если в один прекрасный момент при попытке зайти в Яндекс.Район, вы увидите следующее сообщение?

В тесноте и обиде: очередь на жилье для сирот поручено ликвидировать

В ближайшие шесть лет все сироты, имеющие право на получение жилья, должны быть им обеспечены. Сегодня период ожидания квартир составляет от трех до пяти лет, а в отдельных регионах — до 10. Для ликвидации очереди будет подготовлена специальная программа. Соответствующее поручение дал председатель правительства Дмитрий Медведев в рамках совещания об обеспечении жильем детей, оставшихся без попечения родителей. На программу планируется ежегодно выделять из бюджетов всех уровней около 35 млрд рублей. Расходы могут оказаться больше, в зависимости от ситуации в конкретном регионе.

По закону субъект обязан предоставлять детям-сиротам, не имеющим жилья, благоустроенные жилые помещения. Они могут претендовать на квартиру при достижении 18 лет, однако на первые пять лет должны оформлять специальный договор найма. После этого срока гражданин может приватизировать жилье и распоряжаться им по своему усмотрению. В реальности ждать законных жилых метров сиротам приходится годами. По данным правительства, общая очередь составляет сегодня 280 тыс. человек, из них 191 тыс. уже исполнилось 18 лет и более.

Предоставление жилья сиротам — это прежде всего обязательство регионов, но многие с ним не справляются. Поэтому с 2007 года расходы софинансируют из федерального бюджета.

— По правилам ребенок должен получить жилье сразу, как ему исполнится 18 лет. Тем не менее очередь есть. В разных регионах она разная, в некоторых регионах — до 10 лет. Людям приходится идти в суд. Конечно, это неправильно. Не скрою, ко мне тоже неоднократно обращались те, кто имеет право на эту льготу, — отметил Дмитрий Медведев.

Одна из причин появления очередей — неэффективное использование регионами субсидий из федерального бюджета, считает премьер. В текущем году кассово исполнено две трети выделенных средств. Одни и те же регионы несколько лет подряд не полностью задействуют предоставленные деньги. Дмитрий Медведев поручил разобраться, почему так происходит.

Для решения проблемы выдачи квартир прорабатывается возможность оформления специального сертификата. Механизм сделки предусматривает не получение денег в руки, а поступление их на счет продавца жилья в безналичной форме. Это позволит купить жилье там, где человек видит свое будущее, а не на выселках. Но новация коснется сирот старше 23 лет. Также рассматривается вариант использования жилищного фонда органов исполнительной власти.

Ежегодно обеспечивают жильем порядка 25 тыс. сирот, но существует проблема ежегодного прироста очереди на 11,5–12,5 тыс. человек. Об этом сообщила вице-премьер Татьяна Голикова по итогам совещания.

— С учетом этой накопленной задолженности сейчас премьер-министром принято решение, что мы совместно с регионами должны принять шестилетнюю программу ликвидации полной задолженности — вне зависимости от того, сколько на это потребуется финансовых ресурсов, — сказала вице-премьер.

Какого брокера бинарных опционов выбрать?
  • БИНАРИУМ
    БИНАРИУМ

    1 место, лидер рынка на протяжении 4х лет! Бесплатное обучение для новичков. Заберите свой бонус за регистрацию:

По словам Татьяны Голиковой, совместно с Минфином будет отработан вариант привлечения свободных остатков бюджетов субъектов, которых накопилось около 2,7 трлн рублей. Из них почти 50% приходится на Москву.

Потокобезопасная очередь без блокировок

Задача

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

Я нашел два существующих решения используемых для безопасной передачи данных из одного потока в другой – использование взаимоисключающих объектов (MUTually EXclusive objects) и паттерна блокировок: Read-Write Lock Pattern. Однако данные решения не подходили для решения моей задачи. MUTEX объекты в один момент времени могут быть использованы только одним потоком, таким образом, если один поток использует MUTEX объект, другой поток должен ждать. Второй вариант имеет аналогичный недостаток – если идет чтение, то поток производящий запись должен ждать снятия блокировки, и наоборот – если идет запись, то поток производящий чтение ожидает окончание записи.

Поскольку существующие решения не подходили, пришлось разрабатывать решение, которое бы помогло в данном случае. Исходя из задачи требования к решению были следующими:

  • Используемая структура данных – очередь.
  • Решение должно поддерживать один поток производящий запись данных и один поток считывающий данные.
  • Решение должно позволять записывать и считывать данные одновременно.

Решение

Решение основывалось на очереди построенной на основе однонаправленного связанного списка, в которую был добавлен еще один, постоянно присутствующий в ней элемент, т.е. очередь никогда не становилась пустой. Критерием того, что в очереди нет элементов являлся факт того, что указатели на голову и на хвост очереди показывали на один и тот же элемент, т.е. были равны:

При записи сначала создается новый элемент и только потом переносится указатель на хвост очереди. Благодоря тому, что указатель на хвост переносится в последний момент, когда данные в очереди уже есть избегается возможность конфликта записи и чтения:

При чтении сначала переносится указатель на голову очереди, затем удаляется пустой элемент очереди, и наконец производится чтение данных из очереди. При этом прочтенные данные удаляются, остается только «упаковка», которая становится новым пустым элементом:

В итоге чтение и запись полностью изолированны друг от друга, т.е. два потока могут читать и писать одновременнно, никак не мешая друг-другу. Конфликтов удается избегать за счет постоянного наличия хотя бы одного элемента в очереди.

Реализация

Элемент очереди был реализован в виде шаблона следующим образом:

template
class QueueItem
<
public:
E* data;
QueueItem* next;

template
QueueItem ::QueueItem(E* data)
<
this->data = data;
next = NULL;
>

При создании очереди сразу же создается пустой элемент:

template
Queue ::Queue()
<
QueueItem * stub = new QueueItem (NULL);

Проверка на пустоту очереди производится простым сравнением указателей на голову и на хвост очереди:

template
bool Queue ::empty()
<
return head == tail;
>

При записи нового элемента сначала элемент записывается в список и только затем переносится указатель на хвост очереди:

template
void Queue ::enqueue(T* value)
<
QueueItem * item = new QueueItem (value);

item->data = value;
item->next = NULL;

Чтение производится стандартно:

template
T* Queue ::dequeue()
<
if (head == tail)
return NULL; // queue is empty

QueueItem * tmp = head;
head = head->next;
delete tmp;

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

Данное решение является примером реализации потокобезопасной очереди, который может быть применен в некоторых частных случаях, а именно когда:

  • Сущность задачи предполагает использование очереди.
  • Необходимо избежать задержек при записи и чтении из очереди (например в компьютерных играх или других интерактивных программах).
  • Есть только один поток передающий данные и только один поток принимающий данные. Данное ограничение может быть расширенно на случай несколький передающих и одного принимающего потока будет создания отдельной очереди для каждого передающего потока.
Брокеры бинарных опционов с бонусами за регистрацию:
  • БИНАРИУМ
    БИНАРИУМ

    1 место, лидер рынка на протяжении 4х лет! Бесплатное обучение для новичков. Заберите свой бонус за регистрацию:

Добавить комментарий