Главная » Статьи для тега "блокировку"

Как избежать взаимоблокировок в Visual C# (Sharp)

Добавлено Дата: 7 March, 2014 категория: C#

При взаимоблокировке (deadlock) исполнение кода прекращается. Взаимоблоковка происходит, когда один поток удерживает блокировку и ожидает информию от другого потока. Но другой поток не может предоставить эту информацию первому, т. к. он ожидает получить блокировку.

Читать »

Реализация потоковой архитектуры "читатель/писатель" в Visual C# (Sharp)

Добавлено Дата: 20 February, 2014 категория: C#

Потокова я архитектур а "читатель/писатель " основан а н а идее ,  чт о  в  т о  время ,  когд а оди н пото к выполняе т операци ю чтения , а друго й пото к такж е хоче т считат ь т е  ж е данные , т о почем у б ы ем у  н е позволит ь это ?  Н о есл и  оди н  пото к хоче т выполнят ь операци ю  записи ,  т о  тольк о   это т   пото к   може т  делат ь   это .   Иным и   словами ,   досту п к   данны м   дл я   чтени я    могу т   разделят ь   нескольк о   потоков ,    н о   дл я   запис и   досту п к  данны м   предоставляетс я   исключительн о  одном у   потоку .

Читать »

Потоки в процессе Android

Добавлено Дата: 22 August, 2013 категория: Разработка для Android

 

AsyncTask и ContentProvider вместе образуют очень мощную идиому, которая может быть адаптирована к разнообразным видам распространенных архитектур приложения. Почти любой паттерн «Модель-вид-контроллер» (MVC), в котором вид опрашивает модель, может (и, пожалуй, должен) реализовываться таким образом. Если архитектура приложения требует, чтобы модель отправляла изменения в вид, или в данной архитектуре модель является долгоживущей или работает непрерывно, одного только AsyncTask может быть недостаточно.

Читать »

БЛОКИРОВКА

Добавлено Дата: 24 August, 2012 категория: SQL, Базы данных

Как было указано в разделе 16.1, все проблемы, описанные в разделе 16.2, могут быть устранены с помощью механизма управления параллельным выполнением, называемого блокировкой. В его основе лежит простая идея — если для некоторой транзакции А требуется гарантия, чтобы определенный объект, в котором она заинтересована (как правило, кортеж базы данных), не изменился каким-то образом без ее ведома (как описано выше), она приобретает блокировку на этот объект (как принято называть соответствующую операцию). Неформально выражаясь, следствием приобретения блокировки является то, что к рассматриваемому объекту, условно говоря, "блокируются доступ других транзакций", и поэтому, в частности, предотвращается возможность внесения ими изменений. Благодаря этому транзакция А может продолжать свои операции обработки в полной уверенности в том, что рассматриваемый объект останется в определенном состоянии до тех пор, пока он требуется для этой транзакции.

Читать »

НАМЕЧЕННЫЕ БЛОКИРОВКИ

Добавлено Дата: 20 July, 2012 категория: SQL, Базы данных

До этого времени в основном предполагалось, что единицей измерения объема данных, применяемых в целях блокировки, является отдельный кортеж. Но, в принципе, нет никаких оснований, по которым блокировки нельзя было бы применять к большим или меньшим единицам данных, например, ко всей переменной отношения, или даже ко всей базе данных, или (переходя в другую крайность) к отдельному компоненту конкретного кортежа. В данном случае  речь  идет о степени детализации блокировки [16.10], [16.11]. Как и обычно, здесь приходится идти на компромисс, поскольку чем тоньше детализация, тем больше степень распараллеливания, а чем она грубее, тем меньше блокировок приходится устанавливать и проверять, что способствует также снижению издержек. Например, если транзакция установила блокировку X на всю переменную отношения, то нет необходимости устанавливать блокировки X на отдельных кортежах в этой переменной отношения; с другой стороны, ни одна из  параллельно выполняемых транзакций вообще не сможет получить каких-либо блокировок на данной переменной отношения или на кортежах в этой переменной отношения.

Читать »

Критические участки и состояние конкуренции за ресурсы – ЧАСТЬ 2

Добавлено Дата: 16 May, 2012 категория: Ядро Linux

Вначале кажется, что описанная ситуация не имеет  простого решения. Как  можно предотвратить чтение очереди на  одном  процессоре в тот  момент, когда  другой  процессор обновляет ее?  Вполне логично аппаратно реализовать простые инструкции, такие  как  атомарные арифметические операции  или  операции сравнения, тем  не менее  было  бы  смешно аппаратно реализовывать критические участки  неопределенного  размера, как  в приведенном примере. Все что нужно  — это  предоставить метод, который позволяет отметить начало  и конец; критического участка, и предотвратить или  заблокировать  (lock)  доступ  к этому  участку, пока  другой  поток  выполняет его.

Читать »

Спин-блокировки чтения-записи

Добавлено Дата: 12 May, 2012 категория: Ядро Linux

Иногда в  соответствии с  целью   использовани я  блокировок их  можпо   разделить  два типа — блокировки чтения (reader  lock)  и  блокировки записи  (writer  lock). Рассмотрим некоторый список,  который может  обновляться и  в котором может  выполняться поиск. Когда  список обновляется (в него  осуществляется запись),  никакой  другой  код  не  может  параллельно осуществлять запись  или чтение  этого  списка. Запись означает исключительный доступ.  С другой  стороны, если  в списке выполняется  поиск (чтение информации), важно  только, чтобы  никто другой  не  выполнял записи в  список.  Работа  со  списком заданий в  системе (как  обсуждалось в  главе  3, "Управление процессами")  аналогична  только   что  описанной  ситуации. Не  удивительно, что список заданий в системе защищен с помощью спин-блокировки чтениязаписи  (reader-writer spin  lock).

Читать »

BLK: Большая блокировка ядра

Добавлено Дата: 20 April, 2012 категория: Ядро Linux

Добр о  пожаловать к  "рыжему   пасынку"  ядра.   Большая  блокировка ядра   (Big Kernel  Lock, BKL)  — это  глобальная спин-блокировка,  которая была  создана специально  для  того, чтобы  облегчить переход  от первоначальной реализации SMP  n операционной системе Linux  к мелкоструктурным блокировкам. Блокировка BKL  имеет следующие интересные свойства.

Читать »

Семафоры чтения-записи

Добавлено Дата: 14 April, 2012 категория: Ядро Linux

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

Семафоры  чтения-записи  представляются с   помощью   структуры  struc t    rw_ semaphore, которая определена в  файле <asm/rwsem.h>. Статически определенный семафор чтения-записи  может быть создан с  помощью функции

Читать »

Концепция блокировок в SQL Server

Добавлено Дата: 5 April, 2012 категория: Microsoft SQL Server, Базы данных

SQL Server реализует свойство изоляции с помощью блокировок, которые защищают строки транзакций от влияния других транзакций. Блокировки SQL Server нельзя представлять себе только как состояния “страница заблокирована” и “страница разблокирована”. На самом деле все гораздо сложнее. И перед тем как начать управлять блокировками, нужно понять схему их действия.

Читать »