待機

読み:たいき
外語:wait 英語
品詞:さ変名詞

機会が来ることを待つこと。

目次

コンピューターの処理でも、ある処理のあと、いくらかの時間を待つ必要などが生じることが多々あり、この場合に待機することになる。

プログラミングにおいては、次の二種類がある。

プログラミング

プログラミングでウェイトを作る方法は様々存在する。

例えばLinux(Androidのカーネル含む)でウェイトを作りたい場合、ユーザー空間ではsleep()やusleep()、nanosleep()などが使われる。カーネル内では短時間ならば*delay関数、それ以外ならば*sleep関数を使うことが多い。

そのほかにも、taskletやworkqueue、あるいはタイマーを用いて自力で実装することも可能である。

いずれにせよ、システムの動作状況や呼び出しに要する時間、あるいはシステムタイマーの粒度など様々な要因により、指定した時間よりも若干延ばされる傾向にある。

ライブラリ関数

通常のアプリケーションを作成するためのライブラリ関数である。

POSIX.1-2001では、次が定義されている。

unistd.h

#include <unistd.h>
unsigned int sleep(unsigned int seconds);
int usleep(useconds_t usec);

time.h

#include <time.h>
int nanosleep(const struct timespec *req, struct timespec *rem);

カーネル関数

カーネルでは、一般のライブラリ関数とは異なるものが使われている。Linuxカーネルの場合は、次の通り。

delay関数

delay関数はビジーウェイトであり、内部ではループ処理等で処理時間を稼いでいる。

linux/delay.h

void mdelay( unsigned long msecs ) ;
void udelay( unsigned long usecs ) ;
void ndelay( unsigned long nsecs ) ;

sleep関数

sleep関数は、ウェイト中に、CPUを他のスレッドに対してスケジューリングする。

通常はSIGALRMなどのシグナルを用いて実装されており、時間が経過してシグナルが発生すると、元の処理に戻るようになっている。

linux/delay.h

void ssleep( unsigned int seconds );
void msleep( unsigned int msecs ) ;
unsigned long msleep_interruptible( unsigned int msecs ) ;

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.04a (27-May-2022)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club