Page 152 - 6571
P. 152

СУЧАСНІ ПІДХОДИ ДО РОЗРОБКИ

                                          ПАРАЛЕЛЬНИХ ПРОГРАМ




                                                       ЛЕКЦІЯ 17

                         ОСНОВИ РОБОТИ З БІБЛІОТЕКОЮ POSIXTHREADS



                        17.1 Створення нового потоку виконання


                        Згадаємо, що потік – це «полегшений» процес, тобто процес
                  з власним програмним лічильником і стеком виконання, але без

                  «важкого» контексту (таблиць сторінок), пов’язаного з роботою
                  програми.  Деякі  операційні  системи  давно  надавали  механізми,
                  що  дозволяють  розробникам  писати  багатопотокові  програми.

                  Але дані механізми відрізнялися між собою, тому додатки не мо-
                  жна було переносити між різними операційними системами або
                  навіть  між  різними  типами  однієї  операційної  системи.  Тому,
                  щоб виправити дану ситуацію, в середині 1990-х років було ви-

                  значено стандартний набір функцій мови C для багатопотокового
                  програмування.  Група  розробників,  що  розробляла  даний  набір
                  функцій працювала під керівництвом організації POSIX (Portable

                  Operating System Interface), тому бібліотеку було названо Pthreads
                  для потоків POSIX. На сьогоднішній час дана бібліотека широко
                  використовується і доступна для самих різних типів операційних

                  систем.
                        Бібліотека Pthreads включає в себе ряд функцій для управлін-
                  ня потоками і їх синхронізації. Розглянемо базовий набір функ-

                  цій, достатній для створення і взаємодії потоків, а також для син-
                  хронізації їх роботи.
                        Для доступу до бібліотеки Pthreads в програмі на мові C пот-
                  рібно виконати чотири дії. По-перше, необхідно підключити ста-

                  ндартний заголовний файл бібліотеки Pthreads:

                        #include <pthread.h>
                        По-друге, потрібно оголосити змінні для одного дескриптора

                  атрибутів потоку і одного або декількох дескрипторів потоку:

                        pthread_attr_t tattr; /* атрибути потоку */

                                                             151
   147   148   149   150   151   152   153   154   155   156   157