名 前
sched_yield − プ ロ セ ッ サ ー を 空 け 渡 す (yield)
書 式
#include <sched.h>
int sched_yield(void);
説 明
sched_yield() を 呼 び 出 す こ と で 、 呼 び 出 し た ス レ ッ ド が CPU の 使 用 権 を 手 放 す こ と が で き る 。 そ の ス レ ッ ド は 、 そ の ス レ ッ ド の 静 的 プ ラ イ オ リ テ ィ の キ ュ ー の 末 尾 に 移 動 し 、 新 し い ス レ ッ ド が 走 り 始 め る 。
返 り 値
成 功 し た 場 合 は sched_yield() は 0 を 返 す 。 エ ラ ー の 場 合 は −1 が 返 さ れ 、 errno が 適 切 に 設 定 さ れ る 。
エ ラ ー
Linux の 実 装 で は 、 sched_yield() は 常 に 成 功 す る 。
準 拠
POSIX.1−2001.
注 意
sched_yield() を 呼 び 出 し た 時 点 で 最 大 優 先 度 の リ ス ト の 中 に 呼 び 出 し 元 の ス レ ッ ド し か 存 在 し な け れ ば 、 そ の ス レ ッ ド は 呼 び 出 し 後 も 走 り 続 け る こ と に な る 。
POSIX シ ス テ ム で sched_yield() は <unistd.h> に _POSIX_PRIORITY_SCHEDULING が 定 義 さ れ て い る 場 合 に の み 使 用 可 能 で あ る 。
sched_yield() を 戦 略 的 に 呼 び 出 す こ と で 、 (極 度 に ) 競 合 す る リ ソ ー ス (mutex な ど ) を 呼 び 出 し 元 が 解 放 し た 際 に 他 の ス レ ッ ド や プ ロ セ ス に 実 行 機 会 を 与 え る こ と で 、 性 能 を 上 げ る こ と が で き る 。 sched_yield() を 必 要 も な い の に 呼 び 出 し た り 、 不 適 切 な 場 面 (例 え ば 、 他 の ス ケ ジ ュ ー リ ン グ 対 象 と な る ス レ ッ ド が 必 要 と す る リ ソ ー ス を 呼 び 出 し 元 が 保 持 し た ま ま の 状 態 ) で 呼 び 出 し た り す る の は 避 け る こ と 。 な ぜ な ら 、 sched_yield() の 呼 び 出 し よ り 不 必 要 な コ ン テ キ ス ト ス イ ッ チ が 起 こ り 、 シ ス テ ム 性 能 が 劣 化 す る 結 果 に な る か ら で あ る 。
関 連 項 目
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。