Page 128 - 4868
P. 128

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

               значень  свого  рядка  матриці  і  записує  результат  у  відповідний  елемент
               глобального  масиву  sums.  Використання  масиву  (а  не  окремої  змінної),
               дозволяє  уникнути  появи  критичних  секцій.  Коли  всі  робочі  процеси
               підходять до точки бар’єрної синхронізації, то робочий процес з індексом 0
               обчислює та виводить на друк суму всіх елементів матриці.


                     Запитання для самоперевірки

                     1. Що сприяло появі бібліотеки Pthreads для потоків POSIX?
                     2. Яке основне призначення бібліотеки Pthreads?
                     3. Які необхідно виконати дії для доступу до бібліотеки Pthreads в мові
               програмування C?
                     4. У чому полягає відмінність між локальним і глобальним плануванням
               потоку у бібліотеці Pthreads?
                     5. Яким  чином  запустити  потік  створений  за  допомогою  бібліотеки
               Pthreads?
                     6. Які існують способи синхронізації потоків у бібліотеці Pthreads?
                     7. Опишіть рішення задачі типу «виробник-споживач» з використанням
               бібліотеки Pthreads.
                     8. Як називається процедура блокування в бібліотеці Pthreads?
                     9. Яким  чином  можна  створити  умовну  змінну  використовуючи
               бібліотеку Pthreads?
                     10. Назвіть  основні  операції  над  умовними  змінними  визначеними  у
               бібліотеці Pthreads.



                          ЛЕКЦІЯ 18. БАГАТОПОТОКОВЕ ПРОГРАМУВАННЯ
                                                    МОВОЮ JAVA


                     18.1. Керування головним потоком виконання

                     На відміну від інших мов програмування, мова Java пропонує вбудовану
               підтримку  багатопотокового  програмування.  Багатопотокова  програма
               включає дві або більше частин, які можуть виконуватися одночасно. Кожна
               частина  такої  програми  називається  потоком  (thread),  і  кожен  потік  задає
               окремий шлях виконання. Система часу виконання Java залежить від потоків
               у багатьох відношеннях  і всі бібліотеки класів спроектовані з  урахуванням
               багатопотоковості. Фактично мова Java використовує потоки для того, щоб
               забезпечити  асинхронність  у  всьому  середовищі  виконання,  що  дозволяє
               знизити  неефективність  програмного  коду  зумовлену  марним  виконанням
               циклів центральним процесором.
                     Однопотокові системи використовують підхід, на основі циклу подій з
               опитуванням.  У  даній  моделі  єдиний  потік  керування  виконується  в
               нескінченному  циклі,  опитуючи  єдину  чергу  подій.  Як  тільки  потік
               керування сигналізує про те, що мережевий файл готовий до читання, цикл
               подій  передає  керування  відповідному  обробнику  подій.  У  програмі  не
               виконуються  інші  дії  до  того  часу,  поки  обробник  подій  не  поверне
   123   124   125   126   127   128   129   130   131   132   133