ヘッダ<スレッド>(C ++。11)
テンプレート<クラス時計、クラス期間>
空sleep_until(のconstのstd ::クロノ:: time_point <時計、期間>&SLEEP_TIME);
役割:
現在実行中のスレッドはSLEEP_TIMEオーバーフローするまでブロックされます。
SLEEP_TIMEとクロックはSLEEP_TIMEに影響するクロック調整に注意を払うように、あること、関連しています。そのため、
またはクロックがあってもなくてもよい期間がSLEEP_TIMEより短くても長くてもよいです。時計::今は()、調整の方向に応じて、この関数が呼び出される時刻を返します。この機能は、理由は、オーバーフローにSLEEP_TIME後に長期の閉塞によって引き起こされたスケジューリングまたはリソースの競合でも可能です。
パラメータ:
ロングブロックさSLEEP_TIME
戻り値:
なし
例外:
クロックまたは(例外をスローすることはありません標準ライブラリで提供されるクロックと期間)任意の例外がスローされた期間から
例:
1の#include <iostreamの> 2の#include <iomanip> 3の#include <クロノ> 4の#include <ctimeの> 5の#include <スレッド> 6の#pragma警告(無効:4996)//加上可去掉危険请使用localtime_s的编译报错 7のint main()の 8 { 用い9のstd ::クロノ:: SYSTEM_CLOCK。 10のstd ::のtime_t TT = SYSTEM_CLOCK :: to_time_t(SYSTEM_CLOCK ::今())。 11構造体のstd :: TM * PTM = STD :: LOCALTIME(&TT)。 12のstd :: coutの<< "現在時刻:" <<はstd :: put_time(PTM、 "%のX")<< '\ n'は、//必须大写X、若小写X、输出的为日期 13のstd :: coutの<< "次の分の開始を待っている... \ n"は、 14 ++ ptm-> tm_min。 15 ptm->のtm_sec = 0。 16のstd :: this_thread :: sleep_until(SYSTEM_CLOCK :: from_time_t(はmktime(PTM)))。 17のstd :: coutの<<はstd :: put_time(PTM、 "%のX")<< "に達した\ N!"; 18 GETCHAR()。 19リターン0; 20}
結果: