Розбиття програм на множину потоків

· Визначення, анатомія та планування потоку;

· моделі створення та функціонування потоку;

· бібліотека Pthread

· а

·

Якщо робота підпрограм в програмі є надто складною, тоді доцільно ре­алізувати ці підпрограми у вигляді міні-програм, які виконуються паралельно в середині основної програми. В попередніх лекціях ми розглянули методи роз­биття однієї програми на декілька процесів, кожен з яких виконує окрему зада­чу. Такі методи дозволяють додатку в кожен момент часу виконувати відразу декілька дій. Але в цьому випадку кожен процес має власний адресний простір та ресурси. Оскільки кожен процес займає окремий адресний простір, то взає­модія між процесами стає великою проблемою. Для забезпечення зв’язку між частинами програми, що виконуються роздільно, необхідно реалізовувати такі засоби міжпроцесорної взаємодії, як канали, FIFO-черги (з дисципліною обслу­говування ²першим прийшов – першим опрацьований²) та змінні середовища. Інколи зручно мати одну програму, яка виконує декілька задач одночасно, не розбиваючи її на множину міні-програм. При таких умовах можемо викорис­та­ти потоки. Потоки дозволяють одній програмі складатися з паралельно викону­ва­них частин, причому всі частини мають доступ до одних і тих же змінних, констант та адресного простору в цілому. Потоки можемо розглядати як міні-програми в основній програмі. Для потоків необхідний менший об’єм програм­них ресурсів. Тому потоки можемо розглядати, як полегшені процеси, тобто во­ни дозволяють скористатися багатьма перевагами процесів без великих затрат на організацію взаємодії між ними. Потоки забезпечують засобами розділу ос­новної програми на декілька паралельно виконуваних завдань.