一つのイベントに対してCPUが即時実行できればいいけどさ
同時に複数のイベントが起こったらどうすんの?
そういう時はイベントをキューにプッシュするといいよ。
ふーん。具体的にどんなクラスを使えばいいの?
std::queueクラスを宣言して、std::condition_variableをPushすればいいわ。
ちなみにGazeboはstd::condition_variable、Webotはpthread_cond_tを使っているね
条件変数のOS間の違いをまとめてみたわ
condition_variableのメンバ関数[std] | pthread_cond_tを引数に取る関数[Linux] | Windows | 説明 | |
---|---|---|---|---|
(constructor) | pthread_cond_t | |||
待機 | wait | pthread_cond_wait | WaitForSingleObject | 起床されるまで待機する |
wait_for | pthread_cond_timedwait | 相対時間のタイムアウトを指定して、起床されるまで待機する | ||
シグナル | notify_one | pthread_cond_signal | 待機しているスレッドを一つ起床する | |
notify_all | pthread_cond_broadcast | 待機しているスレッドを全て起床する | ||
SetEvent | オブジェクトをシグナル状態にする | |||
(destructor) | pthread_cond_destroy |