sched_yield -
освободить
процессор
Standard C library (
libc,
-lc)
#include <sched.h>
int sched_yield(void);
Вызов
sched_yield()
заставляет
вызывающую
нить
освободить
процессор.
Нить
перемещается
в конец
очереди
согласно
её
статическому
приоритету,
и
управление
передаётся
другой
нити.
При
успешном
выполнении
sched_yield()
возвращается
0; при ошибке
возвращается
-1, а в
errno
содержится
код ошибки.
В
Linux-реализации
sched_yield() всегда
завершается
успешно.
POSIX.1-2001, POSIX.1-2008.
Если
вызывающая
нить
единственная
в списке с
самым
высоким
приоритетом,
то она
продолжит
выполняться
после
вызова
sched_yield().
В системах POSIX,
в которых
доступен
вызов
sched_yield(),
определён
_POSIX_PRIORITY_SCHEDULING в
<unistd.h>.
Оперативные
вызовы
sched_yield()
могут
улучшить
производительность,
давая
другим
нитям или
процессам
шанс
поработать,
когда
(сильно)
оспариваемые
ресурсы
(например,
мьютексы)
освобождаются
вызывающим.
Избегайте
частых или
нецелесообразных
вызовов
sched_yield()
(например,
когда
ресурсы,
необходимые
других
планируемым
нитям,
по-прежнему
удерживаются
вызывающим),
так как это
приводит к
чрезмерному
переключению
контекстов,
что
ухудшит
производительность
системы.
Функция
sched_yield()
предназначена
для
использования
с
алгоритмами
планирования
реального
времени (т. е.,
SCHED_FIFO или
SCHED_RR).
Использование
sched_yield() с
недерминированными
алгоритмами
планирования,
такими как
SCHED_OTHER, не
определено
и
указывает
на,
вероятно,
неправильно
разработанное
приложение.
sched(7)
Русский
перевод
этой
страницы
руководства
был сделан
Alexander Golubev <
[email protected]>, Azamat Hackimov
<
[email protected]>, Hotellook, Nikita
<
[email protected]>, Spiros Georgaras <
[email protected]>, Vladislav
<
[email protected]>, Yuri Kozlov <
[email protected]>
и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]