我正在尝试一些定时器function,并以上述链接器错误结束。 网上有人build议将-lrt传递给gcc,它工作! 什么是'-lrt',它是如何帮助克服这个错误的? 我查看了gcc –help,但是找不到这些选项,gcc的手册页(这太巨大了)也给了我很多的洞察力。
我需要创build一个计时器来定期调用我的函数(例如每50ms)。 但问题是我将需要改变计时器运行时的系统时间。 我想用boost来做这个,这样代码是可移植的。 否则我在Linux机器上运行它。 我已经尝试过的事情: 尝试使用while循环和线程::睡眠。 使用steady_clock计算睡眠时间。 还尝试使用deadline_timer 当系统时间被调整时,这两个都停止工作。 问:有没有什么办法(最好使用boost)创build一个独立于系统时间的callback计时器? (示例代码的奖金业力)
请帮忙,如何在Linux Ubuntu 16.04的 Swift 4中使用Timer实例? 当我尝试做: let timer = Timer.scheduledTimer(timeInterval: 10.0, target: self, selector: #selector(MyClass.myMethod), userInfo: nil, repeats: true) 我得到错误:错误:“#select器”只能用于Objective-C运行时
我一直在运行一个短时间运行的程序(大约是第二个用户CPU时间的1/8),不pipe我多么努力,我永远不能得到超过90个样本。 坦率地说,这还不够细致。 这意味着可以设置和处理不超过约1K的警报/秒。 有没有办法缩短样本期? 据了解,这会减慢程序的运行速度(会增加更多的上下文切换),但重要的是我能够获得如此快速的采样。 请注意,我正在运行在3.2 LINUX,x86_64 setarch'd到32位模式。 32位模式很重要,因为最终的目标将在32位设备上。 请直接询问关于LINUXconfiguration文件计时器的后续问题:/ questions / 22848764
我一直在为社区编写一个程序,而且遇到了一个我找不到答案的问题。 我有一个VB.NET应用程序,其中有一个计时器事件,每秒触发一次检查任务是否存在,如果启用,这将运行一些代码,根据Windows的版本将运行schtask.exe或jt.exe ,都与创build和检查计划任务有关。 现在当用户注销或者在我的程序运行时closures了Windows,我们经常会遇到一个错误“SCHTasks.exe – 应用程序错误,应用程序无法正确启动(0xc0000142)。点击OKclosures应用程序”,I为JT.exe也得到相同的错误,我认为这是因为计时器事件已经在关机/注销closures和Windows不会让相应的程序启动时触发。 我已经尝试禁止在以下forms结束代码中的计时器,但没有奏效。 If e.CloseReason = CloseReason.WindowsShutDown Then Timer2ChkLoggingTask.enabled = False 最新的,我试过我在互联网上find,但似乎也不工作,添加处理程序是在我的表单加载代码。 ShuttingDwn是一个公共共享variables。 AddHandler Microsoft.Win32.SystemEvents.SessionEnding, AddressOf SessionEnding Private Sub SessionEnding(ByVal sender As System.Object, ByVal e As Microsoft.Win32.SessionEndingEventArgs) ShuttingDwn = True End Sub 这里是我的代码,运行schtasks.exe,有一些代码使用这个函数,但这是唯一的一点,实际运行schtasks.exe,我会认为,检查ShuttingDwn的价值将停止问题,除非因为我的代码到达这一点时,它实际上还没有被更新。 Public Function SCHTasksRun(ByVal Arguments As String) As String 'Creates a task using SCHTasks If Form1.ShuttingDwn = True Then […]
我想在clock_gettime(CLOCK_MONOTONIC)和mach_absolute_time Windows上find一个体面的替代品。 GetTickCount令人讨厌,因为它是故意的偏见:当系统从暂停或hibernate状态恢复时,看起来Windows计算出暂停(从主板)多长时间,然后将其添加到滴答计数中,使其看起来像系统被closures了。 QueryUnbiasedInterruptTime更友好:它是一个简单的,看似可靠的计数器,它只是返回系统自启动以来运行的时间。 现在,我已经用QueryUnbiasedInterruptTime进行了实验,看看在计算机进入睡眠,混合睡眠和hibernate状态时会发生什么。 它似乎正确地更新,使它看起来是单调的(即,系统在hibernate之前存储它并恢复它,使应用程序不会感到困惑)。 但是, 在Python开发页面上有一个注释(顺便说一下,这是一个非常有用的时间函数参考资源!): QueryUnbiasedInterruptTime()不是单调的。 我想有人做了一个testing来确定。 这些信息是否准确? 如果是这样,出于兴趣,我想知道你必须做什么才能让回报价值倒退。
我试图find一种方法来让我的代码等待两秒钟,然后再继续。 我在保护模式下使用Linux的nasm,所以我只能使用int 80h。 我发现了一个称为“ alarm ”(27)的syscall调用,另一个叫做“ pause ”(29)。 但是,当我尝试使用这些,程序等待并结束,而不是继续执行。 我还发现了另一个syscall ,sigaction,它改变了信号的行为(所以我认为它可以用来使程序忽略由报警产生的信号,而不是退出),但我不太了解sigaction如何工作。 谢谢你的帮助。 有用的链接: http : //man7.org/linux/man-pages/man2/alarm.2.html http://man7.org/linux/man-pages/man2/sigaction.2.html
我们知道,在信号处理程序中做事情是非常糟糕的,因为它们运行在类似中断的环境中。 当信号处理程序被调用时,很可能会保存各种锁(包括malloc()堆锁!)。 所以我想实现一个不使用信号机制的线程安全定时器。 我能怎么做? 对不起,实际上,我不期待有关线程安全的答案,但有关在Unix或Linux上实现一个线程安全的计时器的答案。
通常, CLOCK_MONOTONIC_RAW用于获取不受NTP或adjtime()影响的时钟。 但是, clock_nanosleep()不支持CLOCK_MONOTONIC_RAW并试图使用它将导致返回代码95 操作不支持 (内核4.6.0)。 clock_nanosleep()是否考虑了这些时钟调整,或睡眠时间会受到影响? 如果需要睡眠时间,不应该受到时钟调整的影响,还有什么select?
我的印象是,QueryPerformanceCounter实际上正在访问提供HPET(高性能事件定时器)的计数器—当然,HPET是一个定时器,当计数器的值与期望的间隔相匹配时发送中断,一个定时器“脱离”QueryPerformanceCounter你必须在软件中编写你自己的循环。 我认为硬件背后的唯一原因是相同的,因为我曾经读过QueryPerformanceCounter正在访问芯片组上的计数器。 http://www.gamedev.net/reference/programming/features/timing/声称QueryPerformanceCounter使用明显具有指定时钟频率的芯片组计时器。 但是,我可以validationQueryPerformanceFrequency在不同的机器上返回的数字大不相同,事实上,从启动到启动,数字可能会稍有变化。 返回的数字有时可能是完全荒谬的 – 意味着蜱在纳秒范围内。 当然,放在一起这一切工作, 也就是说,使用QueryPerformanceCounter / QueryPerformanceFrequency编写定时器软件可以让你得到适当的时间,而且延迟非常低。 使用这些函数的软件定时器可以非常好。 例如,间隔1毫秒,超过30秒,很容易将接近100%的滴答落入预期间隔的10%以内。 在100微秒的时间间隔内,您仍然可以获得高成功率(99.7%),但是最差的时钟可以在200微秒的时间内完成。 我想知道HPET背后的时钟是否一样。 据说HPET应该仍然增加精度,因为它是一个硬件计时器,但是至今我不知道如何在Windows中访问它。