タイマーを作成するにはどうすればよいですか? Visual Basic のようなタイマー。タイマーが有効になっている場合は、時間切れになるまで待機します。
どのように機能するか知りたいので、既存のライブラリを使用したくありません。
だから..タイマーがどのように機能するかを誰かが説明してくれることを願っています。また、高度すぎない場合は、自分で作成するコードの例を教えてください。
編集:Linuxシステム用に作成したい。
以下は、Linux で実行される非常に基本的な例です。のマニュアルページをsignal
見ると、 が支持されて非推奨になっていることがわかりますsigaction
。を忘れないことが重要ですvolatile
。そうしないと、while
最適化によってはループが終了しない場合があります。SIGALRM
他のタイマー機能によって使用される可能性のある高度に共有されたリソースがどのようにあるかにも注意してください。
プログラムはWaiting
3 秒間印刷し、Finally ...
1 回印刷すると終了します。
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
volatile int mark = 0;
void trigger(int sig)
{
mark = 1;
}
int main(void)
{
signal(SIGALRM, trigger);
alarm(3);
while (!mark)
{
printf("Waiting\n");
}
printf("Finally ...\n");
return 0;
}
出来るよ
#include <stdio.h>
#include <unistd.h>
int main() {
printf("wait\n");
sleep(3);
printf("time elapsed\n");
return 0;
}