我创建了10个线程(准确地说是pthreads),每个线程都注册了一个回调函数,例如fn1,fn2 ... fn10。我还使用调度策略FIFO为每个线程分配不同的优先级。应用程序的要求是必须定期调用这些函数中的每一个(周期性因每个线程而异)。为了实现周期性,我从其他问题中获得了使用itimer和sigwait方法的想法(不太确定这是否是实现此方法的好方法,欢迎任何其他实现此建议)。
我的问题是,当每个线程的周期变化时,我如何处理SIGALRM在各自的线程中重复调用这些函数?
提前致谢。
答案 0 :(得分:2)
使用Do sleep functions sleep all threads or just the one who call it?作为参考,我的建议是避免使用SIGALRM。信号通常会传递给流程。
恕我直言,你有两种方法可以做到这一点:
sleep
只调用阻塞调用线程。我会使用第二种解决方案,因为第一种解决方案在线程环境中看起来像sleep
的用户级实现。