Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет yigal_s ([info]yigal_s)
@ 2012-12-01 22:08:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
банальности OOD: объектно-ориентированная локировка
вот мелочь вроде, а приятно.

interface ILockable
{
   void lock();
   void unlock();
}


хотя можно и так (далее будет понятно, почему)

interface IEnterable
{
   void enter();
   void leave();
}


Где это может применяться? Ну, для начала, мютекс ложится на этот интерфейс напрямую.

А вот так ложится на этот интерфейс read-write lock:

class RWLock
{
    ILockable& readLock();
    ILockable& writeLock();
}


обратите внимание, эти функции ничего не локают, а только лишь возвращают интерфейс.

мелочь, а приятно, поскольку позволяет использовать один и тот же guard класс для локировки чего угодно:

Guard g1(mutex);
Guard g2(rwlock.readLock());
Guard g3(rwlock.writeLock());