2012-02-08 5 views
-1

私のコードからtime関数を呼び出し、値を保存しましょう。その後、私は割り込みを無効にし、いくつかのコードが実行されますが、それは実行するのに些細な時間を要します。その後、私は割込みを再開し、時間関数から値を取得します。time.hのtime()はどのように機能しますか?

start = time (NULL); 
disable_interrupts(); 
... 


... 
enable_interrupts() 
end = time (NULL); 

開始値と終了値がまったく同じ値になっていますか?どのように割り込みを無効にするとこの奇妙な振る舞いができますか?

+3

あなたはどんなOS /カーネル/ CPUアーチですか? (単純な時間追跡のために割り込みを使用することはまれではありません) – Mat

+1

プロセス全体が1秒未満かかりますか? – Foggzie

+0

セクション内の作業を増やすと、時差に変化は見られませんか? – perreal

答えて

3

あなたのプラットフォーム/ OS(これは埋め込み型のように感じます)に応じて、時間の実装には、タイマ割り込みまたはvblank/hblank割り込みのカウントさえ使用します。割り込みをオフにしてこの結果を得ることは、これを確認しているようです。ところで、私は他の人たちと同意しています。それは、些細なことがあっても割り込みを止めることは、多くの問題を抱えています。何が起こっているのか正確に分からない限り、正確に言えば、足で自分を簡単に撃って、数か月後にはそれを知ることさえできません。

関連する問題