问题标签 [setitimer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
349 浏览

linux - linux上的setitimer四舍五入?

当我在 Linux 2.6.26 系统(Debian 5.0.5)上设置一个短暂的超时setitimer然后查询设置值(withgetitimer或 another setitimer)时,我得到一个高于我设置的值:

返回:

这是有问题的,因为我们使用一些计算后报告的剩余时间,而且它们也太大了。

这是一个已知问题吗?(谷歌搜索不起作用。)有没有人有一个好的解决方法?

0 投票
1 回答
7750 浏览

c - 设置定时器问题

我的双核机器上运行了以下代码。

当我在同一台 PC 上运行应用程序的一个或两个实例时,我的正确时间分辨率为 100 毫秒。但是,当我在同一台 PC 上运行同一应用程序的 3 个实例时,时间分辨率超过 100 毫秒。是否有可能使应用程序的 3 个实例以相同的 100 毫秒分辨率运行?这与我机器上的核心数量有关吗?

0 投票
1 回答
568 浏览

c - 使用 setitimer 暂停计时器?

在 C 中,有没有办法使用 setitimer 启动计时器,然后暂停它,然后用暂停时剩余的时间恢复计时器?我最初的想法是通过使用 getitimer 来节省剩余的时间,停止计时器,然后将计时器设置回 getitimer 中保存的值,但这似乎不起作用。

0 投票
1 回答
892 浏览

linux - Linux 上的 setitimer 和信号计数。信号计数与运行时间成正比吗?

有一个可以setitimer在 Linux 上使用的测试程序(内核 2.6;HZ=100)。它设置各种定时器每10毫秒发送一次信号(实际上是设置为9毫秒,但时间片是10毫秒)。然后程序运行一段固定时间(例如 30 秒)并对信号进行计数。

是否保证信号计数与运行时间成正比?每次运行和每种计时器类型 (-r -p -v) 的计数是否相同?

注意,系统上应该没有其他 cpu-active 进程;问题是关于固定 HZ 内核的。

0 投票
1 回答
462 浏览

c++ - 如何使用 C++ 中的 sigaction 和 itimerval 结构同时安排两个事件?

我想在特定时间安排一个事件,更准确地说,我想产生一个泊松流量。所以我需要以指数分布生成的特定时间间隔发送一个数据包。我在网上做了一些研究,发现该setitimer方法可以在一定时间后安排警报信号,但我不知道如何在我的情况下使用它。

感谢您的建议。我按照你说的做了。我还有一点疑问:在我的代码中,我需要同时安排两个独立的事件,通常是同时填充两个队列。这就是我现在所做的:

另一个队列的函数相同,但指数随机变量不同

总的来说,我做以下事情:

请问我有两个问题:

1-在 sa_handler 方法中使用指针“this”在内部调用函数是一个很好的解决方案吗?

2- 在主函数中,两个进程是否如我所愿同时发生:我的意思是两个队列是否同时填充?

0 投票
1 回答
169 浏览

c++ - 如何使用 itermerval 和 sigaction 结构 C++ 以随机间隔同时调度两个函数

这里是新的代码片段:

由于 pthread_cond_wait 通常在一个线程在达到某个阈值之前不访问属性时使用,我们必须使用与此变量关联的互斥锁以避免任何竞争条件,但在我的情况下,这两个线程实际上并不需要访问相同的内存区域,这只是在第一个线程允许时调度第二个线程的一种方式。在这种情况下,是否有必要在“pthread_cond_wait”之前调用“pthread_mutex_lock”?

0 投票
1 回答
742 浏览

c - 用定时器处理 C 信号

http://codepad.org/rHIKj7Cd(不是整个代码)

我想要完成的是父母在共享内存中写一些东西,然后孩子做出相应的反应,然后每五秒钟写回一些东西。我考虑过使用 SIGUSR1-2,并且可能在处理程序中打开 signum,但我不知道如何编写代码,因为 setitimer 会抛出 SIGALRM。我显然不想在处理程序中分叉,因为我只需要一个孩子和一个父母,那么我如何定义不同的行为?我希望我的目标很明确:

每 5 秒:

  • SIGALRM 由定时器抛出
  • 父级将其计算写入共享内存(正在使用信号量)
  • 孩子从共享内存中读取,写回它的计算

我也知道不建议使用signal(),这不是重点。

0 投票
1 回答
1045 浏览

python - 正确配置 signal.setitimer()

我很难弄清楚为什么程序会无限期暂停,即表现出类似无限循环的行为

可能我不知道执行的顺序,start()中timer超时的时候,程序跳转到__catcher(),对吧?然后计时器被重置,剩下的语句,那么程序在哪里恢复执行

谢谢您的帮助!

0 投票
0 回答
2101 浏览

python - Python:Windows 中的 SIGALRM 和 setitimer

以下代码适用于 Unix,但我想将其转移到 Windows 操作系统。问题是在 Windows 中signal.SIGALRMsignal.setitimer不起作用。如果有人可以帮助我,我真的很感激。

0 投票
1 回答
1832 浏览

c - 使用 sigaction 时未调用信号处理程序

我正在尝试实现用户级线程库,并且需要以循环方式调度线程。我目前正在尝试为我使用 makecontext、getcontext 和 swapcontext 创建的 2 个线程进行切换工作。使用具有 ITIMER_PROF 值的 setitimer,并为 sigaction 分配一个处理程序,以便在生成 SIGPROF 信号时调度一个新线程。但是,不会调用信号处理程序,因此线程永远不会被调度。可能是什么原因?以下是一些代码片段:

上面的代码是初始化一个定时器并将一个处理程序调度附加到信号处理程序。我假设信号 SIGPROF 将被提供给将调用 scheduler() 函数的上述函数。调度器函数如下:

我有一个就绪线程队列,其中存储了它们各自的上下文。每当执行 setcontext 指令时,每个线程都应该被调度。但是,scheduler() 没有被调用!谁能指出我的错误??