Книга розрахована на широке коло читачів, які цікавляться програмуванням на C # .Введіте сюди коротку анотацію
Книга: C # 4.0: повне керівництво
Основи багатопотокової обробки
Основи багатопотокової обробки
Відмінності в багатозадачності на основі процесів і потоків можуть бути зведені до наступного: багатозадачність на основі процесів організується для паралельного виконання програм, а багатозадачність на основі потоків - для паралельного виконання окремих частин однієї програми.
Головна перевага багатопотокової обробки полягає в тому, що вона дозволяє писати програми, які працюють дуже ефективно завдяки можливості вигідно використовувати час простою, неминуче виникає в ході виконання більшості програм. Як відомо, більшість пристроїв введення-виведення, будь то пристрої, підключені до мережевих портів, накопичувачі на дисках або клавіатура, працюють набагато повільніше, ніж центральний процесор (ЦП). Тому більшу частину свого часу програму доводиться очікувати відправки даних на пристрій вводу-виводу або прийому інформації з нього. А завдяки многопоточной обробці програма може вирішувати якусь іншу задачу під час вимушеного простою. Наприклад, в той час як одна частина програми відправляє файл через з'єднання з Інтернетом, інша її частина може виконувати читання текстової інформації, що вводиться з клавіатури, а третя - здійснювати буферизацию чергового блоку даних, що відправляються.
У середовищі .NET Framework визначені два різновиди потоків: пріоритетний і фоновий. За замовчуванням створюється потік автоматично стає пріоритетним, але його можна зробити фоновим. Єдина відмінність пріоритетних потоків від фонових полягає в тому, що фоновий потік автоматично завершується, якщо в його процесі зупинені всі пріоритетні потоки.
У зв'язку з організацією багатозадачності на основі потоків виникає потреба в особливого роду режимі, який називається синхронізацією і дозволяє координувати виконання потоків цілком певним чином. Для такої синхронізації в C # передбачена окрема підсистема, основні засоби якої розглядаються в цьому розділі.
Всі процеси складаються хоча б з одного потоку, який зазвичай називають основним, оскільки саме з нього починається виконання програми. Отже, в основному потоці виконувалися всі наведені раніше приклади програм. З основного потоку можна створити інші потоки.
У мові C # і середовищі .NET Framework підтримуються обидва різновиди багатозадачності: на основі процесів і на основі потоків. Тому засобами C # можна створювати як процеси, так і потоки, а також керувати і тими і іншими. Для того щоб почати новий процес, від програмують потрібно зовсім небагато зусиль, оскільки кожен попередній процес абсолютно відокремлений від наступного. Набагато важливішою надається підтримка в C # багатопотокової обробки, завдяки якій спрощується написання високопродуктивних, багатопоточних програм на C # в порівнянні з деякими іншими мовами програмування.
Класи, які підтримують багатопотокове програмування, визначені в просторі імен System.Threading. Тому будь-яка многопоточная програма на C # включає в себе наступний рядок коду.