Linux System Programming
Български
Български
  • Въведение
  • Част 1 - Основи на Линукс
    • Какво е системно програмиране?
    • Работна среда
    • Отдалечен достъп
    • Как да получите помощ в Линукс?
    • Файлова система
    • Трансфер на файлове
    • Процеси в Линукс
    • Потребители и групи
    • Файлови разрешения
    • Управление на потребители и групи
    • Стандартни потоци
    • Пренасочване и тръбопроводи
    • Текстовият редактор Nano
    • Упражнение върху основи на Линукс
  • Част 2 – Програмиране
    • Kомпилиране
    • Компилатор
    • Изходен програмен код
    • Компилирайте в асемблер
    • Компилирайте до обектен файл
    • Компилирайте до изпълнима програма
    • Стартирайте изпълнимата програма
    • Библиотеки
    • Архиватор
    • Създаване на обектните файл
    • Създаване на статична и динамична библиотеки
    • Програма за намиране сумата на числа
    • Дебъгване
    • Упражнение върху тема програмиране
  • Част 3 – Файлова система и файлове
    • Файлове
    • Файлови системи и именовани пространства
    • Работа с файлове
    • Буферирани срещу небуферирани потоци
    • Библиотека за работа с файлове
    • Отваряне и затваряне на файл
    • Четене на съдържанието на файл
    • Четене и отпечатване на файл
    • Четене и писане на файл
    • Запис на изречения във файл
    • Търсене в файлове и откъслечни файлове
    • Направете файл с дупка
    • Заключване на файлове
    • Заключи и пиши там
    • Упражнение върху работа с файлове
  • Част 4 – Процеси
    • Процеси
    • Управление на процесите
    • Методи за работа с процеси
    • Изпълнение на команда
    • Показване на изходния код на файла
    • Стартиране на дъщерен процес
    • Отпечатване на идентификаторите на процесите
    • Изчакване и прекратяване на дъщерен процес
    • Изпълнение и отпечатване на състоянието
    • Зомбита и проста обработка на сигнали
    • Игра на зомбита
    • Упражнение върху процеси
  • Част 5 – Комуникация между процеси
    • Методи за комуникация между процеси
    • Сигнали
    • Най-важните сигнали
    • Управление на сигналите
    • Обработка на сигнал
    • Изчакване на сигнали
    • Разглеждане на сигнали
    • Показване на информация за сигналите
    • Reentrancy
    • Анонимни и наименувани тръби
    • Работа с тръби
    • Използване на анонимни тръби
    • Използване на именовани тръби
    • Упражнение върху комуникация между процеси
  • Част 6 - Синхронизация на комуникацията между процесите
    • Опашка за съобщения
    • Библиотеки за работа със съобщения
    • Определяне на общите данни
    • Сървър за съобщения
    • Клиент за съобщения
    • Споделена памет
    • Библиотеки за работа със споделена памет
    • Определяне на общите данни
    • Сървър за памет
    • Клиент за памет
    • Семафори
    • Библиотеки за работа със семафори
    • Определяне на общите данни
    • Семафор Сървър
    • Семафор Клиент
    • Упражнение за синхронизация на комуникация между процеси
  • Част 7 – Сокети
    • Сокетите в Линукс
    • Работа със сокети в C
    • Използване на Unix сокети
    • Файл сокет сървър
    • Файл сокет клиент
    • Двойка сокети
    • Пример за двойка сокети
    • Мрежови сокети
    • Мрежов сокет сървър
    • Мрежов сокет клиент
    • Упражнение върху сокети
  • Част 8 – Нишки
    • Въведение в нишките
    • Библиотека за работа с нишки
    • Функции за управление на нишки
    • Създаване на нишки
    • Финализиране на нишки
    • Съединяване на нишки
    • Пример за съединяване на нишки
    • Функции за прекратяване на нишки
    • Типове при прекратяване на нишки
    • Пример за прекратяване на нишки
    • Упражнение върху нишки
  • Част 9 - Синхронизация на нишки
    • Изход от нишка
    • Управление на изход от нишка
    • Пример за изход от нишкa
    • Защо е необходима синхронизация?
    • Механизми за синхронизация
    • Мютекси
    • Кога е необходимо заключване?
    • Типична употреба на мютекси
    • Проблеми при състезателни условия
    • Безопасен за нишките код
    • Състояние на мъртва хватка
    • Създаване и унищожаване на мютекси
    • Заключване и отключване на мутекси
    • Пример за синхронизиране посредством използване на мютекс
    • Синхронизиране със семафори
    • Пример за синхронизиране посредством използване на семафор
    • Упражнение за синхронизация на нишки
  • Част 10 – Демони
    • Какво са демоните?
    • Скелет на демон
    • Чат демон
Powered by GitBook
On this page

Was this helpful?

  1. Част 9 - Синхронизация на нишки

Изход от нишка

Нишка може да организира кои функции да бъдат извиквани при изход от нишката. Тези функции са известни още като манипулатори за почистване на нишки (Термин на Английски език: Thread Cleanup Handlers). Повече от един манипулатор за почистване може да бъде установен за всяка нишка. Манипулаторите се записват в стек (Термин на Английски език: Stack), което означава, че се изпълняват в обратен ред спрямо добавянето им.

Когато дадена нишка бъде анулирана или прекратена чрез извикване на pthread_exit(), всички подредени манипулатори за почистване се извеждат и изпълняват в обратен ред на реда, в който са били поставени в стека.

PreviousЧаст 9 - Синхронизация на нишкиNextУправление на изход от нишка

Last updated 3 years ago

Was this helpful?