• 締切済み

Sleep関数について

環境はWindowsを想定します。 Windows.hをインクルードすれば、Sleep(100);で処理を100ms停止することができますが、 Sleep関数はどのようにして100msを測定しているのでしょうか。 初歩的な質問かもしれませんが宜しくお願いします。

みんなの回答

  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.2

Cから発行された時間待ち要求をOSがどのようにして実現しているかを知りたいのだと思いますが、Windowsパソコンにはタイマー回路やクロック回路が搭載されてますので、OSはそれを利用して時間を計測していると思います。 そのような回路に指定時間経過で割り込み信号を発生させてCPUに知らせるようにすることもできますが、WindowsのSleepではおそらく、OSが時間をカウントし、時間待ちを発行したCのアプリ(厳密にはスレッド)を休止→復帰させてるのだと思います。 以上、あくまで私の推測です。 Windowsに詳しい人が回答してくれるかもしれませんので、質問はオープンのままにされたほうがいいと思います。

  • TT414
  • ベストアンサー率18% (72/384)
回答No.1

測定していません。 OSに対して時間待ちのAPIを発行するだけです。

関連するQ&A

  • sleep関数の精度について

    こんにちは。 この掲示板やみなさまには、大変お世話になっています。ありがとうございます。 そこで、質問ですが、 sleep関数を用いて、スレッドを一時停止させたりしたいのですが、sleep関数の精度はどれくらいあるのでしょうか? 1msの精度を出すことはできるのでしょうか・・・ Sleep(1)とSleep(10)では、違いが無いような気がします。 そもそも、無理なことでしょうか? よろしくお願いします。

  • sleep関数について

    sleep関数について検索したところ、「現在のスレッドの処理を一定時間停止します」と出てきました。 では実際に下記のプログラムでsleepは何をしているのですか? (プログラムはネットで検索したときに出てきたものです) #include #include  int main(int argc, char *argv[]) {   motor_a_speed(MAX_SPEED);   motor_a_dir(fwd);   sleep(4);   motor_a_dir(rev);   sleep(4000);   motor_a_dir(brake);   return 0; } motor_a_speed(),motor_a_dir()の意味はわかります。 スピードや方向を指定した後に処理を一定時間停止・・・とはどういうことなのでしょうか。 わかる方教えてください。

  • sleep()関数について

    "数秒おきに警報をn回鳴らすプログラム"をC言語で作成しようと 考えています。 プログラム実行環境はWindowsですが、 sleep()関数は使用できないのでしょうか?? 仮に使用できない場合、この関数に代わる関数や代替方法が あれば教えて頂けませんでしょうか? 宜しくお願いします。

  • 【MFC】sleep関数を用いたモーダルダイアログを閉じる処理の実装方法

    開発環境はVC++2005のMFCです。 Ctest dlg; dlg.DoModal(); にて呼出したダイアログを、sleep関数で一定の時間経過後に 自動で閉じる処理を実装したいのですが、どのように実装すれば良いでしょうか? またsleep関数でなく、他の時間を計る関数を用いたものでも良いので、 もしご存知の方おられましたら、ご教授お願い致します。

  • Sleep(1)が1msでもどってこない。

    Sleep(1)が1msでもどってこない。 ゲームのループ処理を作っていまして、 空いている時間をシステムに返すためにSleep(1)を呼んで いるのですが、 while( msg.message != WM_QUIT ) { if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } else { //ゲーム的な処理 //時間があまればSleep() } } といった定番なことをしているのですが、 30FPSで固定されません。 調べてみるとSleep(1)が2msくらいして戻ってきています。 なにかよいアイディアを持っている方がいらっしゃいましたら教えてください。 よろしくお願いします。

  • プログラミング初心者ですが…

    変な質問ですみませんが…。 C言語の入門書でプログラミングをしていて、 <windows.h>というものが出てきました。 このwindowsというのはOSのWindowsとは関係ないんでしょうか? Linuxでも使えますか? sleep()関数とSleep()関数は違うのでしょうか? コンパイルするとエラーは出ませんでしたが、 sleep(1000)で実行すると、処理が途中で止まってしまいました。 Sleep(1000)とすると、動きました。 コンパイラはcygwinです。

  • EXCEL関数についてのご質問(1)

    何時も大変お世話になっております。 windows7・EXCEL2007の環境になります。 EXCELでとある処理を作成しており、行き詰った所、同僚が下記の関数を見つけてきてくれました。 ただその同僚も関数は判らないとの事。(どうやって見つけたのかが不思議ではありますが) 下記の関数の塊?がどの様な処理を行っているのかご教授頂けませんでしょうか? =IF(ROW(A1)>MAX(購入リスト!$H:$H),"",INDEX(購入リスト!$A:$F,MATCH(ROW(A1),購入リスト!$H:$H,0),COLUMN(A1))) このようなご質問お恥ずかしいのですが、宜しくお願い申し上げます。

  • 関数ライブラリ一覧

    C言語の関数一覧のようなものは何を見たらわかるのでしょうか? 標準関数の一覧はよく見かけますが、ほかの関数の一覧はないのでしょうか? たとえば、あるインターネット上で公開されていたソースコードには #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> #include <sys/param.h> #include <sys/uio.h> #include <unistd.h> と書いてありました。 上3つは標準ライブラリにかいてありますが、その他は載ってません。 こういったsys/uio.hなどの仕様はどこで見れるのでしょうか? よろしお願いします。

  • 関数の組み込み。

    PHPでの関数の組み込みの質問です。 自作の関数を集めたPHPファイル"common_function.php"を製作し、 それぞれの処理の頭でこの関数ファイルをinclude_onceを使って 読み込んでいるという形式で処理を行っています。 include_once("../common/common_function.php"); この処理を行わずにこの関数ファイルををデフォルトで読み込む ようにPHPの設定に組みこむ事はできないのでしょうか? よい方法があれば宜しくお願いします。

    • ベストアンサー
    • PHP
  • タイマー関数について

    こんばんは。 この掲示板には大変お世話になっています。ありがとうございます。 [質問内容] およそ1ミリ秒単位で、待機することができる関数はあるのでしょうか? 私は、C言語を使用しているのですが、タイマー関数としてはSleep関数しか知りません。しかし、最近になってSleep関数は10ミリ秒待機することが限界ということをこの掲示板で知りました。 Windowsプログラミングに用意してある関数で1ミリ秒待機できる関数はありますでしょうか? 私は今、対処方法としてダミー処理をほどこすことでだいたい1ミリ秒のタイマーを作っています。 C言語もまだまだ初心者ですがよろしくお願いします。

専門家に質問してみよう