3

c-component に wait ステートメントはありますか? たとえば、プロセスを続行する前に 0.5 秒待機しますか?

ありがとう!

4

4 に答える 4

7

Johannes Weissの投稿の小さな問題を要約して修正するには(ドイツ語以外のキーボード、申し訳ありません):

昔ながらのPOSIXでは、usleep()関数を使用できます。この関数は、スリープするマイクロ秒数を符号なし整数引数として受け入れます。したがって、0.5秒間スリープするには、次のように呼び出します。

#include <unistd.h>
usleep(500000); /* Five hundred thousand microseconds is half a second. */

新しいPOSIXスタイルのプログラム(私のGentoo LinuxボックスのマニュアルページにはPOSIX.1-2001と書かれています)の場合、nanosleep()を使用します。これには、スリープ期間を保持する構造体へのポインターが必要です。0.5秒間スリープすると、次のようになります。

#include <time.h>
struct timespec t;
t.tv_sec = 0;
t.tv_nsec = 500000000; /* Five hundred million nanoseconds is half a second. */
nanosleep(&t, NULL); /* Ignore remainder. */

nanosleep()の2番目の引数は「rem」と呼ばれ、スリープが何らかの理由で中断された場合、残りの時間を受け取ります。ここでは、簡単にするためにNULLのままにしました。remが(十分に)ゼロになるまでループを実行して、中断に関係なく、本当に睡眠をとることができます。

于 2009-02-13T07:43:47.793 に答える
7

POSIXには

usleep(500);

nanosleep(...);

usleep(3)とのマニュアルを参照してくださいnanosleep(2)EDIT :マンページによるとnanosleep、現在usleepは推奨されていないようです。POSIX.2008

于 2009-02-12T15:28:38.480 に答える
3

Windows の場合、API でこの関数を使用できます

Sleep(500);

そのMSDNページを見てください。指定されたミリ秒の間スリープします。

于 2009-02-12T15:31:41.580 に答える
0

sleep は POSIX でも利用できます。違いは、引数がプロセスがスリープするミリ秒数ではなく秒数を指定することです。

于 2009-02-13T07:20:45.417 に答える