回答編集履歴

1

追記

2016/03/29 08:08

投稿

catsforepaw
catsforepaw

スコア5938

test CHANGED
@@ -1,3 +1,21 @@
1
1
  要は、タイムアウト付きのイベント待ちですよね。そのような処理にはWindows APIの`WaitForSingleObject`が真っ先に思い浮かびます。その仕組みだと「あるイベント」と「タイムアウト時間」のタイミングが重なっても処理されるのはどちらか一方ですし、タイムアウトはイベントとして処理するわけではないのでリセットとかキャンセルとかも不要です。
2
2
 
3
3
  Windows以外では自力でそれに相当するイベント待ちの処理を実装しないといけませんが。
4
+
5
+
6
+
7
+ ---
8
+
9
+ 追記
10
+
11
+
12
+
13
+ メッセージ駆動方式はどうでしょうか。
14
+
15
+ イベントをキューに入れてシリアライズし、「あるイベント」メッセージ処理でタイマーを開始し、同時にキューにタイマーメッセージが残っていたらキャンセル(削除)する。
16
+
17
+
18
+
19
+ Windowsでは、メッセージ処理専用のウィンドウを作って、イベントをシリアライズして処理するということをよくやります。
20
+
21
+