КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Синхронизация нескольких читателей и писателей без ущемления писателей
Синхронизация нескольких читателей и писателей с помощью монитора. Синхронизация нескольких читателей и писателей Применение указанного метода позволяет нескольким читателям одновременно обращаться к хранилищу, но любой писатель получает монопольный доступ. Для этого применяются два двоичных семафора: readerSemaphore и readWriteSemaphore, инициализированных значением 1. Кроме того, хранится текущее число Читателей, первоначально равное нулю. Семафор readerSemaphore используется читателями, чтобы гарантировать взаимно исключающее обновление счетчика читателей. Семафор readWriteSemaphore задействован писателями для обеспечения взаимно исключающего доступа к хранилищу. Но к данному семафору обращаются также и читатели. Он захватывается первым читателем перед началом чтения из хранилища и освобождается последним читателем, закончившим чтение. речь пойдет о применении мониторов для решения проблемы нескольких читателей и писателей. к задаче посредством алгоритма читателей и писателей мониторы напрямую применяться не могут, так как операция читатьАналоговый Датчик должна одновременно выполняться несколькими читателями. Поэтому мы поступим иначе: инкапсулируем аспекты алгоритма читателей и писателей, касающиеся синхронизации, в монитор и перепроектируем класс Хранилище Показаний Аналоговых Датчиков. . Если от читателей постоянно поступают запросы на чтение, писателю в течение неопределенно долгого времени может быть отказано в доступе к хранилищу. Этот феномен называется ущемлением писателя (writer starvation). Ниже показано решение проблемы путем введения дополнительного семафора writer Waiting. Операция startWrite теперь должна захватить семафор writerWaiting до захвата семафора readWrite Semaphore. Операция startRead захватывает (и освобождает) семафор writerWaiting перед тем, как захватить reader Semaphore. Поясним, для чего нужны такие изменения. Предположим, что несколько читателей заняты чтением, а писатель в этот момент пытается обновить данные. Он успешно захватывает семафор writerWaiting, но дальше вынужден ждать, пока читатели освободят семафор readWriteSemaphore. Если приходит новый читатель, то он вызывает startRead и приостанавливается, ожидая освобождения семафора writerWaiting. Тем временем уже имеющиеся читатели заканчивают свои операции, и последний освобождает семафор readWriteSemaphore, который тут же переходит в распоряжение ожидающего писателя, а тот освобождает семафор writerWaiting, позволяя занять его читателю или писателю.
Дата добавления: 2014-01-07; Просмотров: 542; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |