Робота з В« потоками В» в середовіщі Delphi
Працюючий з Delphi, нужно мати на увазі: цею чудовий продукт не Тільки спрощує розробка складаний Додатків, ВІН вікорістовує при цьом ВСІ возможности операційної системи. Одна з можливіть, якові підтрімує Delphi, - це так звані потоки (threads) або нитки.
Потоки дозволяють в рамках однієї програми вірішуваті декілька завдань одночасно. З недавніх ПІР операційні системи для персональних комп'ютерів Зробили це можливіть.
Операційна система (ОС) надає Додатках Деяк Інтервал годині центрального процесора (ЦП) i в мить, коли додаток переходити до Очікування Повідомлень або звільняє процесор, операційна система передает управління іншій задачі. Тепер, коли комп'ютери з більш чем одним процесором різко впали в ціні, а операційна система Windows NT может використовуват наявність декількох процесорів, Користувачі Дійсно могут запускаті одночасно больше однієї задачі. Плануючі годину центрального процесора, Windows 95 або Windows NT розподіляють его между потоками, а не между Додатками. Щоб використовуват ВСІ Переваги, забезпечувані декількома Процесори в СУЧАСНИХ операційніх системах, програміст винен знаті, як створюваті потоки.
У цьом рефераті розглядаються наступні питання:
В· що таке потоки;
В· різніця между потоком и процесом;
В· Перевага потоків;
В· кла TThread в Delphi;
В· реалізація багатопотокового Додатках;
В· сінхронізація потоків.
Визначення потоку й достатньо просте: потоки - це об'єкти, одержуючі годину процесора. Година процесора віділяється квантами (quantum, time slice). Квант годині - це Інтервал, что є у розпорядженні потоку Доті. поки годину не якщо передано в Розпорядження Іншого потоку.
квант віділяються НЕ програмам або процесам, а породженім ними потокам. Як мінімум, КОЖЕН процес має хочай б один (головний) Потік, альо Сучасні операційні системи, починаючі з Windows 95 (для пріхільніків Borland Kylix и Linux такоже), дозволяють запустіті в рамках процеса декілька потоків. p> Найпростішій приклад їх вікорістовування - Додатки з складу Microsoft Office. Наприклад, пакети Excel и Word задіють по декілька потоків. Word может одночасно коректуваті граматику и друкувати, при цьом здійснюючі Введення даніх з клавіатурі и міші; программа Excel здатн Виконувати фонові обчислення и друкувати.
Примітка
взнати число потоків, запущених додатком, в Windows NT, 2000 и ХР можна за помощью утіліті Task Manager (Диспетчер завдань). Для цього среди Показників, что відображаються у вікні Processes, нужно вібрато опцію Thread Count. Так, у момент написання ціх рядків MS Word вікорістовував 5 потоків, середовище Delphi - 3.
Если задачі Додатках можна розділіті на Різні підмножіні: обробка подій, введення/Висновок, зв'язок и ін., то потоки могут буті органічно Вбудовані в програмне решение. Если розробник может розділіті велику задачу на декілька дрібніх, це Тільки підвіщіть переносимість коду и возможности его багатократно вікорістовування.
зробім додаток багатопотоковім, програміст дістає додаткові возможности управління їм. Наприклад, через управління пріорітетамі потоків. Если один з них В«прігальмовуєВ» додаток, займаючі Дуже багатая процесорній годину, его Пріоритет может буті зниженя.
Інша ВАЖЛИВО перевага упровадження потоків - при зростанні В«НАВАНТАЖЕННЯВ» на додаток можна збільшити кількість потоків и тім самим Знято проблему.
Потоки спрощують життя тим програмістам, Які Розробляють Додатки в архітектурі клієнт/сервер. Колі потрібне обслуговування нового клієнта, сервер может запустіті спеціально для цього окремий Потік. Такі потоки Прийнято назіваті симетрично потоками (symmetric threads) - смороду мают однакове призначення, віконують один и тієї ж код и могут розділяті одні и ті ж Ресурси. Більш того, Додатки, розраховані на Серйозно НАВАНТАЖЕННЯ, могут підтрімуваті пул (pool) однотипність потоків. Оскількі создания потоку вімагає Певного годині, для Прискорення роботи бажано наперед мати потрібне число готових потоків и актівізуваті їх у міру Підключення Чергова клієнта.
Примітка
такий підхід особливо характерними для Web-сервера Microsoft Internet Information Services и Додатків, оброблювальніх Предложения в его середовіщі. Если ві створюєте Додатки ISAPI на Delphi, то можете використовуват пулінг потоків, підключівші до проекту модуль ISAPIThreadPool.pas. Если ві Хочете запозічіті Ідеї для других цілей, ознайомтеся з вмістом цього модуля.
Асіметрічні потоки (asymmetric threads) - це потоки, вірішальні Різні задачі І, як правило, не розділяючі сумісні ресурси. Необхідність в асиметрічними потоках вінікає:
В· коли в Програмі необхідні трівалі обчислення, при цьом звітність, Зберегти нормальну реакцію на введення;
В· коли нужно оброблят...