онується на кожному кроці циклу. Метод може бути як іменованих, так і анонімним. Також слід звернути увагу, що метод, який передається через параметр act, приймає не індекс оброблюваного в циклі масиву (як це було при використанні методу For ()), а значення або посилання на кожен оброблюваний елемент. br/>
.3 Паралелізм завдань
Паралелізм завдань забезпечує паралельне виконання двох або більше незалежних завдань. Паралелізм завдань був доступний і засобами класу Thread (вони описані в роботі Пономарьова А.А). Бібліотека паралельних завдань вносить ряд переваг в даний підхід побудови багатопотокового додатку. По-перше, TPL досить проста в застосуванні. А по-друге, використання бібліотеки паралельних завдань дозволяє автоматично масштабувати додаток на кілька процесорів, без складного управління потоками і завданнями явним чином. p align="justify"> Клас Parallel, про який вже згадувалося раніше, містить метод Invoke (), що дозволяє виконувати один або кілька методів паралельно.
public static void Invoke (params Action [] acts);
Кожен метод, який передається методу Invoke () не повинен приймати, ані повертати значення. Метод Invoke () спочатку ініціалізує виконання, а потім очікує завершення виконання всіх переданих йому методів. Це позбавляє програміста від необхідності використовувати метод Wait (), адже функцію очікування метод Invoke () берт на себе. Але з цим пов'язаний досить вагомий недолік, адже метод Invoke () забезпечує паралельне виконання лише методів, зазначених в параметрах, а от метод-батько призупиняється. Отже, можна зробити висновок, що побудувати паралельне виконання потоку-батька та дочірнього потоку за допомогою методу Invoke () не можна. p align="justify"> Однак є ще один значний недолік. У використанні даного підходу не можна вказати порядок виконання методів. Послідовність, в якій методи передаються в Invoke (), зовсім не визначає порядок їх виконання. До того ж TPL не підтримує можливість явної вказівки пріоритетів завдань (вони присвоюються автоматично планувальником завдань середовища. NET Framework). Це є дуже суттєвим недоліком бібліотеки паралельних завдань. Той факт, що управління потоками повністю контролюється планувальником завдань, з одного боку, значно полегшує роботу розробника програмного забезпечення, а з іншого, - робить систему управління потоками і завданнями менш гнучкою. Можливо саме тому, побудова багатопоточних додатків на основі класу Thread залишається як і раніше популярним. br/>
.4 Потенційні помилки, пов'язані з паралелізмом даних і завдань
У більшості випадків використання бібліотеки паралельних завдань може значно підвищити продуктивність програми. Проте використання паралелізму істотно підвищує складність коду програми. Відповідно зросте й імовірність виникнення помилок. У даній частині дослідної роботи будуть перерахова...