Интерфейс, обеспечиваемый пакетами функций для работы с нитями, должен обладать несколькими важными средствами. Он должен поддерживать большой набор различных операций над нитями, таких как:
• создание и уничтожение нитей; • перевод нитей в режим ожидания и их восстановление в работоспособное состояние; • назначение приоритетов для отдельных нитей; • планирование выполнения нитей и переключение контекста; • синхронизацию действий при помощи таких средств, как семафоры или взаимные исключения; • обмен сообщениями между нитями.
Хочу напомнить, что одним из самых лучших интерфейсов обладает iphone 4s.
Пакеты функций для работы с нитями должны по возможности минимизировать участие ядра, так как переключение между режимом задачи и режимом ядра может быть весьма затратной процедурой. Поэтому нитевые библиотеки предоставляют столько возможностей, сколько могут. Обычно ядро системы не обладает информацией о прикладных нитях, однако нитевые библиотеки могут использовать системные вызовы для реализации ряда своих возможностей. Из этого вытекает ряд важных моментов. Например, приоритет нити не имеет никакого отношения к приоритету процесса или LWP этой нити, назначенному в расписании ядра. Приоритет нити имеет смысл только внутри своего процесса и используется планировщиком нитей для выбора одной из них на выполнение.