UNIX と Windows の両方で、C の JavaScript setTimeout に似たものに興味があります。
基本的に、私は欲しい:
start_timer(&function_pointer, int time_in_secs)
または私が得ることができる限りそれに近い。
また、setInterval に似たもの (n 秒ごとにコールバックを呼び出す) も良いでしょうが、それは setTimeout を使用して実装できます:)
コールバックとしてTimerProcを使用するWin32のSetTimer 。
/* calls TimerProc once every 60000 milliseconds */
SetTimer(NULL, 1, 60000, TimerProc);
POSIXインターバルタイマー、timer_createおよびtimer_settimeを試してみることをお勧めします。これにより、シグナルを使用せずにコールバック関数を直接指定できます。タイマーを1回だけ期限切れにする(繰り返し続けない)には:
timer_settime:タイマーのリロード値は、valueのit_intervalメンバーによって指定された値に設定されます。タイマーがゼロ以外のit_intervalで準備されている場合、定期的(または反復的)タイマーが指定されます。
以下は、kernel.orgのLinuxプログラマーマニュアルの良い例とともに、これらのタイマーの使用に関する広範なドキュメントです。
UNIX の場合は、man setitimer
.
alarm() と setitimer() に関するいくつかの情報は、ここで見つけることができます。upcall 関数はシグナル ハンドラーであるため、ここで詳細に説明されているように、シグナル ハンドラーに関連するすべての制限と制限の対象となることに注意してください。
最初のリンクで述べたように、alarm() は POSIX ベースですが、setitimer() はそうではありません (より柔軟ですが)。
試してみてください。移植可能なコードが必要な場合、それらよりも移植性の高いものを作成できない可能性が高くなります;)
http://library.gnome.org/devel/glib/2.20/glib-The-Main-Event-Loop.html#g-timeout-add