Page 86 - 4868
P. 86

Ошибка! Стиль не определен.                                                                84

                         continue[left] = 1;
                         continue[right] = 1;

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


                     Запитання для самоперевірки
                     1. Назвіть  основну  властивість  більшості  паралельних  ітераційних
               алгоритмів?
                     2. У чому полягає неефективність використання оператора co?
                     3. Яким чином працює механізм бар’єрної синхронізації?
                     4. Який найпростіший спосіб реалізації бар’єрної синхронізації?
                     5. У  чому  полягає  недолік  використання  спільних  лічильників  під  час
               реалізації бар’єрної синхронізації?
                     6. Яким чином відбувається синхронізація на основі прапорців?
                     7. Згідно  яких  правил  відбувається  синхронізація  за  допомогою
               прапорців?
                     8. У  якому  випадку  є  ефективною  синхронізація  з  активним

               очікуванням?
                     9. Які  існують  недоліки  у  бар’єрної  синхронізації  із  керуючим
               процесом?
                     10. Яким чином реалізується бар’єр з об’єднуючим деревом?



                            ЛЕКЦІЯ 13. ОСНОВІНІ ГРУПИ СЕМАФОРІВ ТА ЇХ
                                                     РЕАЛІЗАЦІЯ


                     13.1. Синтаксис і семантика семафорів

                     Більшість  протоколів  з  активним  очікуванням  досить  складнідля
               практичної  реалізації.  Окрім  того,  немає  чіткої  межі  між  змінними  для
               синхронізації  і  змінними  для  обчислень,  що  ускладнює  розробку  і
               використання протоколів з активним очікуванням.
                     Ще  один  недолік  активного  очікування  –  його  неефективність  в
               більшості багатопоточних програм. Зазвичай кількість процесів більша числа
               процесорів,  за  винятком  синхронних  паралельних  програм,  де  на  кожен
               процес припадає по одному процесору, тому активне очікування процесу стає
               більш  ефективним,  якщо  під  час  нього  використовувати  процесор  для
               виконання іншого процесу.
   81   82   83   84   85   86   87   88   89   90   91