Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые обзорные » Синхронізація потоків споживачів

Реферат Синхронізація потоків споживачів





Зміст


. Постановка завдання

. Сигнал виробника - споживача

. Рішення проблеми виробника споживача

. Deadlock # 4

. Виробник - споживач з кінцевим буфером

. Сигнал кінцевого буфера виробника споживача

. Кінцевий буфер виробника споживача. Рішення

. ОСРВ RTX

. Постановка завдання

10. Лістинг програми

. Результати роботи

Список літератури


1. Постановка завдання


У багатопоточних програмах часто виникає розподіл праці між потоками. У загальній картині деякі потоки є виробниками, а деякі споживачами. Виробники створюють дані і поміщають їх в структуру даних, споживачі забирають дані і обробляють їх. p align="justify"> Хорошим прикладом є програми, керовані подіями. "Подія" це те, що відбувається для того, що б програма відповіла: користувач натискає кнопку або переміщує миша, блок даних надходить з диска, пакет даних приходить по мережі, закінчується виконувана операція. p align="justify"> Всякий раз, коли відбувається подія, потік-виробник створює об'єкт події і додає його в буфер подій. Одночасно з цим, споживчі потоки беруть події з буфера і обробляють їх. У цьому випадку споживачів називають "оброблювачами подій"

Є кілька обмежень синхронізації, які потрібні нам для того, що б система функціонувала коректно.

У той час як елемент додається або видаляється з буфера, буфер знаходиться в неузгоджену стані. Таким чином, потоки повинні мати ексклюзивний доступ до буфера. p align="justify"> Якщо потік-споживач приходить, в той час, коли буфер порожній, відбувається блокування, поки виробник не додає новий елемент.

Припустимо, що виробники повинні виконати наступні операції багато разів:


event = waitForEvent ()

buffer.add (event)


Лістинг. 1 Основний код виробника

Крім того, передбачається, що споживачі виконають наступні операції:


event = buffer.get ()

event.process ()


Лістинг. 2 Основний код виробника споживача

Як було зазначено вище, доступ до буфера повинен бути ексклюзивним, але waitForEvent і event.process можуть спрацювати одночасно.

Задача: Додати в код виробника і споживача оператори синхронізації, для забезпечення її коректної роботи.


. Сигнал виробника - споживача


Змінні, які ми могли б використовувати:


mutex = Semaphore (1)

items = Semaphore (0)

local event


Лістинг. 3 Ініціалізація виробника-споживача

Взаємне виключення забе...


сторінка 1 з 7 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Проектування системи доставки вантажу від виробника до споживача
  • Реферат на тему: Роль інновацій у процесі переходу від ринку виробника до ринку покупця і до ...
  • Реферат на тему: Заходи щодо вдосконалення доставки вантажів на міжміському маршруті від вир ...
  • Реферат на тему: Поведінка виробника на ринку
  • Реферат на тему: Аналіз знань цільового сегмента виробника побутових пральних машин