teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

微修正

2021/09/26 12:05

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -37,7 +37,7 @@
37
37
  }
38
38
 
39
39
  int main() {
40
- duration = std::chrono::milliseconds(1000);
40
+ duration = std::chrono::milliseconds(500);
41
41
  now = std::chrono::steady_clock::now();
42
42
  for (;;) update();
43
43
  }

2

加筆

2021/09/26 12:05

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -13,4 +13,32 @@
13
13
  std::this_thread::sleep_until(std::chrono::steady_clock::now() + std::chrono::seconds(1));
14
14
  std::cout << "wake up!\n";
15
15
  }
16
+ ```
17
+
18
+ [追記] 一定時間ごとに何かしたいのかしら。だったら
19
+ ```C++
20
+ // 500ミリ秒ごとに"なんかする"
21
+ #include <iostream>
22
+ #include <chrono>
23
+
24
+ std::chrono::steady_clock::time_point now;
25
+ std::chrono::milliseconds duration;
26
+
27
+ void do_something() {
28
+ std::cout << "なんかする\n";
29
+ }
30
+
31
+ void update() {
32
+ std::chrono::steady_clock::time_point tmp = std::chrono::steady_clock::now();
33
+ if ( std::chrono::duration_cast<std::chrono::milliseconds>(tmp - now) >= duration ) {
34
+ now = tmp;
35
+ do_something();
36
+ }
37
+ }
38
+
39
+ int main() {
40
+ duration = std::chrono::milliseconds(1000);
41
+ now = std::chrono::steady_clock::now();
42
+ for (;;) update();
43
+ }
16
44
  ```

1

微修正

2021/09/26 12:01

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  sleep_for() には時間(duration)、
2
2
  sleep_until() には**時刻(time_point)**を与えます。
3
+ ※ キッチンタイマー(時間指定) と 目覚まし時計(時刻指定) の違いです
3
4
 
4
5
  ```C++
5
6
  #include <iostream>