1

我希望所有线程(在 Linux 上运行的多线程 C 代码中)在特定时间后调用一个函数。我试过了alarm()。它不是线程安全的:以这种方式只能调度一次 SIGALRM 生成。如果尚未生成 SIGALRM 信号,则调用将导致重新安排生成 SIGALRM 信号的时间

有没有办法实现这样的功能并保证线程会调用该函数并在那时离开其当前任务?

4

1 回答 1

0

你有一个包含所有pthread_t其他线程的数组吗?如果是这样,则迭代数组并用于pthread_kill将信号发送到其他线程。

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

请注意,在信号处理程序中您可以安全地做的事情并不多。没有 I/O 除了write, 特别是。

于 2013-07-18T13:04:48.287 回答