• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sleep関数について)

sleep関数の役割とは?

このQ&Aのポイント
  • sleep関数は、現在のスレッドの処理を一定時間停止します。
  • プログラム内で使用することで、処理の一時停止や時間の待機を実現することができます。
  • 具体的には、指定した時間だけ処理を停止し、その後の処理を行います。

質問者が選んだベストアンサー

  • ベストアンサー
  • onosuke
  • ベストアンサー率67% (310/456)
回答No.2

sleep関数の意味以前に、 例示のプログラムにおける、 モータの操作方法の概念を取り違えていませんか? # 以下、「モータ」を「車」的なものと考えて、 # 操作を前進、後進、ブレーキと表現します。 これは、僕の根拠がない憶測ですが、恐らく 操作「4秒前進する」は、以下の命令になると思われます。  誤:fwd を4秒間、押し続ける  正:fwd を押す:motor_a_dir(fwd)⇒    ⇒4秒待つ:sleep(4)⇒    ⇒止める:motor_a_dir(brake) # つまり、motor_a_speed() や motor_a_dir() も # 正確な意味は理解できていなかった!!!

n1079
質問者

補足

ということはsleep()をしなければ走り続けるということでいいんでしょうか? あと、sleep()のあとに書いてあるものは、必ずsleep()を実行した後に実行されるのでしょうか。

その他の回答 (2)

  • onosuke
  • ベストアンサー率67% (310/456)
回答No.3

>ということはsleep()をしなければ走り続ける >ということでいいんでしょうか? 恐らくそのとおりだと思われますが、 正確な話は制御対象(プログラム実行環境)の仕様に依存します。 >あと、sleep()のあとに書いてあるものは、 >必ずsleep()を実行した後に実行されるのでしょうか。 基本的にはそうです。実行順序は保証されます。  # でも、途中にreturn文があれば、 # return文以降が実行されないのは分かりますよね。 もっと例外的な話(コンパイル時の最適化の影響で実行順序がおかしくなる)もありますが、初心者であれば、気にしなくても良いです。

n1079
質問者

お礼

詳しい説明ありがとうごさいました!

回答No.1

motor_xxx の関数が何をしているものなのかわからないので推測ですが、何かのデバイスに信号を送ったらすぐに返ってくるようなものなのではないでしょうか。 信号を送って、そのデバイスから完了の通知を受け取ってから制御を返すようなものなら Sleep() は不要だと思いますが、信号を送ってすぐに制御を返す場合、デバイス側が処理を完了するのに必要な時間だけ待機しているということだと思います。(そうしないと次の処理が受け付けられない、とか。)

n1079
質問者

お礼

回答ありがとうございました!

関連するQ&A