API пула потоков
Интерфейс API пула потоков использует объектную конструкцию. Каждый из следующих объектов представлен структурой данных в пользовательском режиме:
- Объект пула — это набор рабочих потоков, которые можно использовать для выполнения работы. При необходимости каждый процесс может создавать несколько изолированных пулов с разными характеристиками. Для каждого процесса также есть пул по умолчанию.
- Группа очистки связана с набором объектов, генерирующих обратный вызов. Существуют функции для ожидания и освобождения всех объектов, которые являются членами каждой группы очистки. Это освобождает приложение от отслеживания всех созданных им объектов.
- Рабочий объект назначается пулу и при необходимости группе очистки. Его можно опубликовать, в результате чего рабочий поток из пула выполнит обратный вызов. Рабочий объект может иметь несколько невыполненных записей; каждый из них создает обратный вызов. Операция после операции не может завершиться сбоем из-за нехватки ресурсов.
- Объект таймера управляет планированием обратных вызовов. Каждый раз, когда истекает срок действия таймера, его обратный вызов отправляется в его рабочий пул. Установка таймера не может завершиться сбоем из-за нехватки ресурсов.
- Объект wait приводит к тому, что поток ожидания ожидает дескриптора. После выполнения ожидания или истечения времени ожидания поток официанта отправляет обратный вызов объектов ожидания в рабочий пул ожидания. Установка ожидания не может завершиться ошибкой из-за нехватки ресурсов.
- Объект ввода-вывода связывает дескриптор файла с портом завершения ввода-вывода для пула потоков. После завершения асинхронной операции ввода-вывода рабочий поток выбирает состояние операции и вызывает обратный вызов объекта ввода-вывода.
В следующей таблице описаны функции исходных и текущих API пулов потоков.
Связанные темы