定期的に何らかのタスクを実行する (たとえば、コンソールに何かを出力する) C プログラムを作成したいと考えています。
以下のように nanosleep を使用して実装しました。500 ミリ秒ごとに関数「func」が呼び出されます。
#include <stdio.h>
#include <time.h>
void func(void);
int main()
{
struct timespec mytimespec;
mytimespec.tv_sec = 0;
mytimespec.tv_nsec = 500000000; /* 500 ms */
while(1)
{
func();
nanosleep(&mytimespec,NULL);
}
return 0;
}
void func(void)
{
printf("This would be printed periodically\n");
}
上記は正常に動作しています。しかし、私はいくつかの疑問があります:-
nanosleep
複数のスレッドがあり、1 つのスレッドが定期的なタスクの実行に依存している場合、正確に機能しますか?Linux で定期的なスレッドを生成する方法はありますか? または、いくつかのタイマー コールバックを使用するには?