Що таке застосування паралелізму

У багатокористувацької системи або додатку, паралелізм є важливим питанням, що команда розробників повинні вирішити. Паралелізм, в контексті програми, є обробка декількох користувачів намагаються отримати доступ до тих же даних одночасно.

Наприклад, розглянемо багатокористувацької системою обробки замовлень, яка дозволяє користувачам додавати і редагувати замовлення для клієнтів. Додавання замовлень не є проблемою, оскільки кожен новий замовлення формує дискретний запису, кілька користувачів можуть одночасно додавати замовлень в базу даних, не заважаючи один з одним.

Редагування замовлень, з іншого боку, може привести до проблем паралелізму. Коли користувач відкриває для редагування, відображається діалогове вікно на локальній машині з інформацією про такий порядок. Щоб досягти цього, система отримує дані з бази даних і зберігає його тимчасово в пам’яті на локальному комп’ютері, так що користувач може переглядати і змінювати дані. Після внесення змін, дані передаються назад на сервер і записи бази даних для цього замовлення буде оновлено. Тепер, якщо два користувача одночасно мати діалог редагування відкрито для тієї ж записи, вони обидва мають копії даних у пам’яті своїх ПК, і може внести до нього зміни. Що відбудеться, якщо вони обидва вирішили зберегти дані?

Відповідь залежить від того, як додаток призначений для боротьби з паралелізмом. Управління багатокористувацький доступ до загального ресурсу є непростим завданням. Будь-який ресурс, який може надаватися більш ніж одному користувачеві потрібно програмне забезпечення логіки для захисту цих ресурсів за рахунок управління дорозі декілька користувачів можуть отримати доступ і змінити його в той же час. Ця проблема тільки стало більш поширеним з моменту появи мережі обміну файлами, реляційні бази даних і клієнт-сервер.

Є кілька способів для програмного додатка для вирішення паралелізму. До їх числа відносяться наступні:

Песимістичний: Ця модель паралелізму місцями захоплює даних. Якщо один користувач має запис відкритим і будь-який інший користувач намагається прочитати, що дані в контексті, який дозволяє редагувати, система відхиляє запит. У попередньому прикладі, перший користувач, щоб відкрити замовлення на редагування отримує блокування запису замовлення. Наступні користувачів, що намагаються відкрити замовлення буде відправлений повідомлення про те, що порядок в даний час редагується іншим користувачем, і доведеться почекати, поки перший користувач не зберігає зміни або скасовує операцію. Ця модель паралелізму є кращим в ситуації, коли досить імовірно, що більш ніж одному користувачеві буде намагатися змінити ті ж дані, в той же час. Недоліком цієї моделі є те, що інші користувачі не зможуть отримати доступ до даних, що будь-який користувач має відкриті, що робить систему менш зручні у використанні. Існує також певна кількість складність реалізації, коли система повинна управляти блокування запису.

Оптимістичний: У моделі оптимістичній блокування користувачі завжди можуть зчитувати дані, і можливо навіть, щоб оновити його. Коли користувач намагається зберегти дані, проте, система перевіряє, щоб переконатися, що дані були оновлені ніхто інший, так як користувач перший відновив його. Якщо вона була змінена, після невдалого оновлення. Такий підхід дозволяє більш користувачам переглядати дані, ніж песимістичні моделі, і зазвичай використовується, коли малоймовірно, що кілька користувачів спробують змінити ті ж дані, в той же час. Тим не менш, це незручно, коли користувач проводить час оновлення запису і виявив, що вона не може бути збережений. Запис має бути відновлена ​​заново і зміни, внесені знову.

Немає паралелізму захисту: Найпростіша модель всього, цей підхід не намагається захистити користувачів від редагування і ті ж дані. Якщо два користувача відкрити запис і внести зміни, зміни другого користувача буде перезаписувати Перший знаходиться в «останньої однієї перемоги” ситуації. Зміни, внесені першим користувачем, будуть втрачені. Також, в залежності від того, як система буде реалізована, такий підхід може призвести до пошкодження даних, якщо два користувачі намагаються зберегти в той же moment.The способом програмне додаток має справу з паралелізмом може вплинути на продуктивність, зручність використання і цілісності даних в системі. Тому важливо розробити тести, щоб переконатися, що додаток коректно обробляє паралелізму, слідуючи модель паралелізму, який був обраний для проекту.