2013-02-25 55 views
1

我希望所有线程(在Linux上运行的多线程C代码中)在特定时间后调用函数。我试过报警()。它不是线程安全的:Only one SIGALRM generation can be scheduled in this manner. If the SIGALRM signal has not yet been generated, the call shall result in rescheduling the time at which the SIGALRM signal is generated

有没有什么方法可以实现这样的功能,并保证线程可以调用该函数并在当时离开当前的任务?多线程 - 每个线程在特定时间后调用函数

+0

你说什么样的时间框架。多少个线程,他们在做什么。你可能会接近这个,但保证它不是真的。 – 2013-02-25 23:08:46

+0

线程正在运行一些openmp任务。我想打断他们目前的工作,让他们做别的事情,然后回到他们的工作。大约100个线程。我可以稍后考虑确切时间。有没有办法做到这一点?多少接近? – 2013-02-25 23:14:15

+0

是否需要在确切的时间段后中断它们?也许一个“完成工作”的计数器就足够了。 – congusbongus 2013-02-25 23:23:18

回答

0

你有其他线程的所有pthread_t的数组吗?如果是这样,迭代阵列并使用pthread_kill将信号发送到其他线程。

您可以在主线程或单独的线程中执行此操作。

请注意,在信号处理程序中没有太多可以安全执行的操作。除了write之外,没有I/O,特别是。