我正在编写一个在每个线程上使用计时器的多线程程序。每个处理程序应该触发特定于该线程的标志。但是,我不确定如何识别信号来自哪个定时器。我正在使用setitimer
。我希望信号模拟正在运行的进程的中断,因此我让线程运行任意任务,直到它获得退出并继续运行的标志。传递参数的替代方法是,有没有办法在启动计时器之前获取传递给处理程序的信号编号?
编辑:在linux机器上运行代码。
答案 0 :(得分:1)
由于您使用的是Linux,我建议您使用timerfd_create()
代替setitimer()
。这将允许您创建大量计时器,使用select()
或epoll_wait()
复用它们,并避免使用有点完全正确的信号。