4
我在我的雙核心機器上運行以下代碼。setitimer問題
當我在同一臺PC上運行應用程序的一個或兩個實例時,我具有100毫秒的正確時間分辨率。但是,當我在同一臺PC上運行同一應用程序的3個實例時,時間分辨率大於100毫秒。是否有可能讓3個應用程序以100毫秒的相同分辨率運行?這與我的機器上的內核數量有關嗎?
#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 (;;);
}
感謝您的提示!我在for循環中使用sem_wait,在timer_handler中使用sem_post並解決了問題。 –
這篇文章有什麼用?您可以請發佈完整的解決方案嗎? – user3236841