4
デュアルコアマシンで次のコードを実行しています。setitimer question
同じPC上でアプリケーションのインスタンスを1つまたは2つ実行しているとき、正しいタイミング解像度は100msです。しかし、私は同じPC上で同じアプリケーションの3つのインスタンスを実行すると、タイミングの解像度は100ミリ秒以上です。 3つのアプリケーションインスタンスを100msecの同じ解像度で動作させることは可能ですか?これは私のマシン上のコアの数に関連していますか?
#include <signal.h>
#include <stdio.h>
#include <string.h>
#include <sys/time.h>
void timer_handler (int signum)
{
double time ;
// obtain time here
gettimeofday() ;
printf("timer_handler at time = %lf \n",
time) ;
}
int main()
{
struct sigaction sa;
struct itimerval timer ;
memset (&sa, 0, sizeof (sa)) ;
sa.sa_handler = &timer_handler ;
sigaction (SIGALRM, &sa, NULL);
timer.it_value.tv_sec = 0 ;
timer.it_value.tv_usec = 100000;
timer.it_interval.tv_sec = 0;
timer.it_interval.tv_usec = 100000 ;
setitimer (ITIMER_REAL, &timer, NULL) ;
for (;;);
}
あなたのヒントありがとうございます!私はsem_waitをforループ内で使用し、sem_postをtimer_handler内で使用して問題を解決します。 –
この投稿の用途は何ですか?完全なソリューションを投稿してください。 – user3236841