概述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,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 (;;); }
将LLVM添加到我的Cmake项目中:为什么在LLVM的Cmake文件中有硬编码path?
以编程方式检测是否安装了windows Media Player
打印任何文件types
将Ctrl + C注入到目标进程中
如何以编程方式移动windows任务栏?
编译后更改linux共享库(.so文件)版本
(Ubuntu 14.04)apt-get libopencv-dev,但得到的错误:无法纠正问题,你已经拿破碎的软件包
将C ++ LPCWSTR打印到文件
什么导致这种内存泄漏?
如何在system()中使用通配符Expression式
手册页setitimer(2)具有以下内容:
定时器在所请求的时间之前永远不会过期,但可能过了一段时间(短时间),这取决于系统定时器分辨率和系统负载; 看时间(7)。
显然,当你运行更多的应用程序实例时,系统负载会变得更高,定时器的准确性也会降低。
如果您替换繁忙循环:
for (;;);
有一些cpu限制(比如一个IO绑定的工作负载),时间会变得更加准确。
总结
以上是内存溢出为你收集整理的setitimer问题全部内容,希望文章能够帮你解决setitimer问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容