Articles of 时钟

.NET Thread.Sleep是否受到DST(或系统时间)更改的影响?

我不确定Windows内核如何处理线程时间… 我正在谈论的DST和任何其他事件,影响一天在Windows上的时间框。 例如, Thread.Sleep将阻塞从零到无限毫秒的线程。 如果内核使用与一天中的时间相同的“时钟”,那么何时使用 (a)某人手动改变一天的时间,或者 (b)一些时间服务器的同步改变了一天的时间,或者 (c)夏时制开始或结束,系统已configuration为响应这两个DST事件, 等等 , 睡觉线程在任何方式受到影响? 即内核是否处理这样的事件,程序员不需要做什么? 注意 :对于非关键应用程序,这可能是一个谁在乎? 情况。 对于关键应用,知道这个问题的答案是重要的,因为有可能必须编程这样的例外条件。 谢谢 编辑:我想到了一个简单的testing,我在LINQPad 4中运行。 testing包括让线程进入睡眠状态,大约在线程进入睡眠的同时启动一个手动定时器,然后(a)将时间提前一个小时,然后进行第二个testing,将时间移回到两个小时…在这两项testing中,睡眠时间都没有受到影响。 底线:使用Thread.Sleep,不需要担心会影响一天的时间的事件。 这里是琐碎的C#代码: Int32 secondsToSleep; String seconds; Boolean inputOkay; Console.WriteLine("How many seconds?"); seconds = Console.ReadLine(); inputOkay = Int32.TryParse(seconds, out secondsToSleep); if (inputOkay) { Console.WriteLine("sleeping for {0} second(s)", secondsToSleep); Thread.Sleep(secondsToSleep * 1000); Console.WriteLine("i am awake!"); } else […]

如何使C计时器在Linux中的特定系统时间到期

我正在尝试创build一个取决于系统时钟的定时器。 这意味着当系统时间改变时,它也会影响这个定时器的到期时间。 所以我想,创build一个基于CLOCK_REALTIME计时器应该做的伎俩。 但是,当这个定时器在60秒之后到期,并且当我使系统时钟提前32秒(使用date命令)时,定时器恰好在60秒之后过期。 它并没有在32秒前到期。 所以我计算了CLOCK_REALTIME和CLOCK_MONOTONIC时钟在2个定时器到期之间的时间。 它显示了CLOCK_REALTIME的92秒和CLOCK_MONOTONIC的60秒,这让我很惊讶,基于CLOCK_REALTIME的计时器没有查找系统时钟的变化。 任何人都可以解释这种行为? #include <stdio.h> #include <signal.h> #include <time.h> #include <string.h> #include <sys/time.h> timer_t timerID; struct timespec rt1, rt2, mt1, mt2; void TimerCalback() { clock_gettime(CLOCK_REALTIME, &rt1); clock_gettime(CLOCK_MONOTONIC, &mt1); printf("%lu sec elapsed for CLOCK_REALTIME\n", rt1.tv_sec – rt2.tv_sec); printf("%lu sec elapsed for CLOCK_MONOTONIC\n", mt1.tv_sec – mt2.tv_sec); rt2 = rt1; mt2 = mt1; […]

了解clock_gettime的问题

clock_gettime可以访问不同的时钟。 特别是我感兴趣的是: CLOCK_REALTIME CLOCK_PROCESS_CPUTIME_ID CLOCK_THREAD_COUTIME_ID 我阅读了这个手册,但是对我没有太大的帮助。 我使用clock_gettime来为我的分析器生成时间戳,当它通过套接字发送收集的数据时。 我注意到以下的不同: CLOCK_REALTIME 我用这个时钟从我的分析器收到的事件有时是错误的顺序。 时间戳以较高的值开始,但不是很高。 通常最后的消息(具有较高时间戳的消息)首先出现,而后面的消息则以较低的值出现。 CLOCK_PROCESS_CPUTIME_ID CLOCK_THREAD_COUTIME_ID 我发现两个时钟都没有什么区别,尽pipe它们的值较小,总是正确的。 我无法解释这种行为。

如何检查terminal中的HZ?

我见过这个http://kaasxxx.wordpress.com/2008/01/22/linux-hz-checker/但脚本似乎不工作。 无论如何,知道一个简单的方法来在Linuxterminal“HZ”? 谢谢,:>

clock()在time.h中的精度

我试图计算一个函数用来运行的滴答数量,并使用clock()函数来这样做: unsigned long time = clock(); myfunction(); unsigned long time2 = clock() – time; printf("time elapsed : %lu",time2); 但问题是它返回的值是10000的倍数,我认为是CLOCK_PER_SECOND 。 有没有更精确的方法或等价的函数值? 我使用Ubuntu 64位,但宁愿如果解决scheme可以在Windows和Mac OS等其他系统上工作。

如何以编程方式在Linux上设置硬件时钟?

Linux提供stime(2)调用来设置系统时间。 但是,虽然这会更新系统时间,但它不会将BIOS硬件时钟设置为与新系统时间匹配。 Linux系统通常在关机和定期间隔时间将硬件时钟与系统时间同步。 但是,如果机器在其中一个自动同步之前进行重新启动,则机器重新启动时,时间将不正确。 如何在设置系统时间时确保硬件时钟得到更新?

为什么C clock()返回0

我有这样的东西: clock_t start, end; start=clock(); something_else(); end=clock(); printf("\nClock cycles are: %d – %d\n",start,end); 我总是得到一个输出“时钟周期是:0 – 0” 任何想法为什么发生这种情况 (只是为了提供一些细节,something_else()函数使用蒙哥马利表示来执行从左到右的求幂,而且我不确定something_else()函数确实需要一些不能忽略的时间。) 这是在Linux上。 uname -a的结果是: Linux snowy.*****.ac.uk 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 2011 x86_64 x86_64 x86_64 GNU/Linux

以编程方式访问graphics卡时钟

是否有可能从Windows应用程序使用graphics卡时钟? 更具体地说 – 是否有可能以某种方式使graphics卡发送时钟事件中断(打勾?),并从软件挂钩? 我想说的是PC时钟不是很好。 精密时钟花费很多钱,加上他们很难colo(GPS信号不可用,primefaces钟花费胳膊和腿等)。 我读到新的graphics卡上有精确的时钟。 所以我的直接思想 – 我可以使用它们来精确地同步我的应用程序到100ns或许(对自己的心理注意) ? 有任何想法吗? PS或audio卡在这个问题… PPS请回答这个问题 – 我可以连接到一个graphics/声卡内部时钟,而不是Windows与Linux的讨论。 谢谢

Linux clock_gettime(CLOCK_MONOTONIC)奇怪的非单调行为

在我的应用程序中,我正在使用clock_gettime(CLOCK_MONOTONIC)来测量帧之间的时间差clock_gettime(CLOCK_MONOTONIC)中的一个典型方法),并且时不时地遇到clock_gettime(..)的奇怪行为 – 返回的值偶尔不是单调的(即上一次比当前时间大)。 目前,如果发生这样的悖论,我只需跳过当前帧并开始处理下一帧。 问题是,这怎么可能呢? 是clock_gettime Linux POSIX实现中的一个错误? 我正在使用Ubuntu Server版本10.04(内核2.6.32-24,x86_64),gcc-4.4.3。

如何使用C#将Windows系统时钟设置为正确的本地时间?

如何使用C#将Windows系统时钟设置为正确的本地时间?