Транзакційна пам’ять.

У програмному забезпеченні схема транзакционной пам’яті – це курс дій для багатопотокового програмування, який використовує транзакції, які дуже схожі на ті, які використовує база даних. Коли два або більше потоку намагаються отримати доступ до одних і тих же даних одночасно, різні небажані ситуації можуть привести до того, що результат програми буде залежить від порядку доступу до потоку. Звичайно потрібно одна послідовність і при многопоточности блокування є переважаючими і найпростішим способом забезпечення того, щоб тільки один потік мав доступ до певного ресурсу за один раз.
Такий підхід до транзакционной пам’яті містить безліч проблем щодо блокувань в многопоточности. Блокування може стати постійною, якщо виникає якась непередбачена помилка, і блокування можуть призводити до непередбачуваних проблем з паралелізмом, наприклад, до взаімоблокіровке або інверсії пріоритетів. В результаті того, що блокування дуже роздроблені, інша проблема включає в себе код, який в кінцевому підсумку закінчується тим, що витрачає більшу частину часу між блокуваннями, перемиканням контексту і розблокуванням. Це ключова проблема, тому що це може привести до того, що код витрачає більше часу на ці дії, ніж на виконання іншої важливої ​​роботи в програмі. Навпаки, великі блокування можуть призводити до зниження продуктивності обробки та зменшення паралелізму.

Проблеми в транзакционной пам’яті адресуються передовими блокуваннями, в тому числі блокуванням C #, блокуванням читання і запису, бар’єрами записи і т. Д. Одним з основних пріоритетів в транзакционной пам’яті є відсутність блокувань і відсутність непотрібного часу обробки блокування, зазвичай прийнято вважати, що структура даних, яка є спільною, не містить блокувань, якщо її операції не вимагають взаємного виключення. Структури даних, які є загальними і не містять блокувань, не дозволяють часто асоціювати проблеми зі стандартними методами блокування, якщо вони знаходяться в системах, які є висококонкурентними.

Модель транзакционной пам’яті і узгодженість (TCC) – нова, запропонована модель для розділяється пам’яті. Відповідно до моделі, транзакції незмінно є базовими одиницями наступного: паралельна робота, узгодженість пам’яті, зв’язок і узгодженість посилання на пам’ять. Модель TCC також спрощує паралельне програмне забезпечення, усуваючи синхронізацію, яка використовує стандарти блокування або сигнали. Через апаратне забезпечення TCC також об’єднує кожну запис з кожної області транзакції в один пакет, щоб передати пакет в стан пам’яті, яке постійно використовується спільно. На додаток до спрощеного апарату когерентності це означає, що потрібно скорочення повідомлень з низьким рівнем спокою і повне усунення певних стандартних протоколів узгодженості.

Ссылка на основную публикацию