プログラムの実行フローを制御しようとすると、指定した期間プログラムを一時停止する必要が生じる場合があります。 C には、他の言語でよく使用される Sleep(time) 関数に直接相当する関数はありません。ただし、C 標準ライブラリは実行可能な代替手段を提供します。
C 標準ライブラリは std::this_thread::sleep_for 関数を提供します。これにより、次のことが可能になります。指定された期間、現在のスレッドの実行を一時停止します。これを使用するには、次のヘッダーを含める必要があります:
<code class="cpp">#include <chrono> #include <thread></code>
std::this_thread::sleep_for の構文は次のとおりです:
<code class="cpp">void sleep_for(const std::chrono::duration& timespan);</code>
ここで、timespan はスリープの期間を指定する std::chrono::duration オブジェクト。ミリ秒ベースの std::chrono::duration を作成するには、std::chrono::milliseconds コンストラクターを使用します。
<code class="cpp">std::chrono::milliseconds timespan(111605);</code>
これらのコンポーネントを使用すると、プログラムの実行を希望の時間停止できます。 Interval:
<code class="cpp">std::this_thread::sleep_for(timespan);</code>
std::this_thread::sleep_until は、正確な時間ベースの同期のための補完関数として機能することに注意してください。
C 11 が導入される前は、この言語にはスレッド機能とスリープ機能がありませんでした。したがって、実行を一時停止する解決策はプラットフォームに依存していました。 Windows または Unix の場合は、次のようなものに頼った可能性があります:
<code class="cpp">#ifdef _WIN32 #include <windows.h> void sleep(unsigned milliseconds) { Sleep(milliseconds); } #else #include <unistd.h> void sleep(unsigned milliseconds) { usleep(milliseconds * 1000); // takes microseconds } #endif</code>
あるいは、Boost ライブラリの boost::this_thread::sleep を使用して実装を簡素化することもできます。
以上がスリープ関数を使用して C でプログラムの実行を一時停止するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。