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

Реферат Розробка багатопотокової програмної моделі для ОС Linux





ії sem_init (). Перший параметр функції sem_init () - покажчик на змінну типу sem_t, яка служить ідентифікатором семафора. Другий параметр, pshared, в даний час не використовується. Ми залишимо його рівним нулю. У третьому параметрі передається значення, яким инициализируется семафор. Подальша робота з семафором здійснюється за допомогою функцій sem_wait () і sem_post (). Єдиним аргументом функції sem_wait () служить покажчик на ідентифікатор семафора. Функція sem_wait () призупиняє виконання викликав її потоку доти, поки значення семафора чи не стане більше нуля, потім функція зменшує значення семафора на одиницю і повертає управління. Функція sem_post (), навпаки, збільшує значення семафора, ідентифікатор якого був їй переданий, на одиницю. Присвоївши семафору значення 0, наша програма створює перший потік і викликає функцію sem_wait (). Ця функція поверне управління програмі після того, як функція потоку викличе функцію sem_post (). p align="justify"> При отрісовке автомобілів використовуємо функцію redraw_state () в которй ми спочатку очікуємо семафор для роботи з консоллю, так як кілька потоків не повинні писати одночасно sem_wait (& console). Потім ми В«пробігаємоВ» по всім машинам for (j = 0; j

(states [j]. state == 2) {(30, 35); (states [j]. name);


У даному випадку, якщо машина перебуває в стані 2, а це означає, що автомобіль зайняв першу станцію заправки, ми переміщаємо курсів в 30 рядок на 35 символ і виводимо на екран ім'я автомашини (літеру).

В даний момент часу займається семафор станції і ми очікуємо поки машина заправиться (sleep (FUEL_TIME)). Після цього стан машини змінюється на 4 і звільняється семафор станції. Стан машини не випадково міняється з 2 відразу на 4. Це пояснюється тим, що стану 2 і 3 описують період перебування автомобіля на першій або другій станції заправки відповідно. Тобто, якщо машина заправлялася на першій станції, то заправка на другий не потрібна і авто рухається до каси. p align="justify"> Аналогічно обробляється процес оплати за заправку. Машина чекає звільнення семафора каси і, якщо семафор вільний, займає касу і чекає час KASSA_TIME. Потім семафор каси звільняється і машина покидає заправку, щоб її місце біля каси зайняв інший автомобіль. p align="justify"> На малюнку зображений приклад роботи програми з десятьма машинами:


В 

Рис. 1. Вікно терміналу із запущеною програмою


Як видно з малюнка 1, програма успішно працює в операційній системі Mac OS X Leopard (v10.5.6). Даний успіх обумовлений тим, що Mac OS X є гібридною, тобто її ядро ​​базується на двох джерелах: перший - приклад класичного мікроядра, узятий з проекту Mach. А другий містить код проекту FreeBSD, який, у свою чергу, заснований на Unix. Саме це і забезпечує роботу програми д...


Назад | сторінка 4 з 5 | Наступна сторінка





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

  • Реферат на тему: Створення програми для обчислення значення функції
  • Реферат на тему: Планування як функція управління
  • Реферат на тему: Контроль як функція управління
  • Реферат на тему: Контроль як функція управління
  • Реферат на тему: Контроль як функція управління