我希望所有线程(在Linux上运行的多线程C代码中)在特定时间后调用函数。我试过 alarm()。它不是线程安全的: 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 :(得分:0)
你有一个包含其他线程的所有pthread_t
的数组吗?如果是这样,请迭代数组并使用pthread_kill
将信号发送给其他线程。
您可以在主线程中或单独的线程中执行此操作。
请注意,您在信号处理程序中可以安全地做的事情并不多。除了write
之外没有I / O.