Page 25 - 6111
P. 25
важливо одержати у своє розпорядження зручні засоби організації
взаємодії частин однієї задачі. Крім поділу адресного простору, всі
нитки розділяють також набір відкритих файлів, таймерів, сигналів
і т.п.
Отже, нитки мають власні:
- програмний лічильник;
- стек;
- регістри;
- нитки-нащадки;
- стан.
Нитки розділяють:
- адресний простір;
- глобальні змінні;
- відкриті файли;
- таймери;
- семафори;
- статистичну інформацію.
Багатониткова обробка підвищує ефективність роботи системи
в порівнянні з багатозадачною обробкою. Наприклад, у
багатозадачному середовищі Windows можна одночасно працювати
з електронною таблицею і текстовим редактором. Однак, якщо
користувач запитує перерахування свого робочого листа,
електронна таблиця блокується до тих пір, поки ця операція не
завершиться, що може зажадати значного часу. У багатонитковому
середовищі у випадку, якщо електронна таблиця була розроблена з
урахуванням можливостей багатониткової обробки, що надаються
програмісту, цієї проблеми не виникає, і користувач завжди має
доступ до електронної таблиці.
Широке застосування знаходить багатониткова обробка в
розподілених системах.
Деякі прикладні завдання легше програмувати,
використовуючи паралелізм, в яких одна нитка виконує запис у
буфер, а інша зчитує записи з нього. Оскільки вони поділяють
спільний буфер, не варто їх робити окремими процесами. Інший
приклад використання ниток - це управління сигналами, такими як
переривання з клавіатури (del або break). Замість обробки сигналу
переривання, одна нитка призначається для постійного очікування
надходження сигналів. Таким чином, використання ниток може
скоротити необхідність в перериваннях користувальницького рівня.
У цих прикладах не настільки важливо паралельне виконання,
наскільки важлива ясність програми.
Нарешті, в мультипроцесорних системах для ниток з одного
адресного простору є можливість виконуватися паралельно на
24