Читати онлайн основи програмування в linux, що таке потік і скачати fb2 без реєстрації

Що таке потік?

Множинні нитки виконання в одній програмі називають потоками. Більш точно потік - це послідовність або цикл управління в процесі. Всі програми, які ви бачили до цього моменту, виконували єдиний процес, хоча, як і багато інших операційні системи, ОС Linux цілком здатна виконувати множинні процеси одночасно. Насправді у всіх процесів є як мінімум один потік виконання. У всіх процесів, з якими ви поки познайомилися в цій книзі, був тільки один потік виконання.

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

Різні проекти розглядали можливості поліпшення підтримки потоків в Linux, що стосуються не тільки усунення слабких розбіжностей зі стандартом POSIX, а й підвищення продуктивності та запобігання непотрібних обмежень. Основна робота була спрямована на пошук способів відображення потоків користувальницького рівня на потоки рівня ядра системи. Двома головними проектами були New Generation POSIX Threads (NGPT, потоки POSIX нового покоління) і Native POSIX Thread Library (NPTL, бібліотека справжніх потоків POSIX). Обидва проекти мали внести зміни в ядро ​​Linux, що забезпечують підтримку нових бібліотек, і обидва пропонували істотне підвищення продуктивності в порівнянні з колишньою реалізацією потоків в Linux.

Схожі статті