在Linux中无限期地睡眠一个线程

时间:2011-09-01 13:47:30

标签: c linux

我想让线程无限期地睡眠。我想这样做的原因是因为我的程序只在收到信号时才采取行动,并且在主线程中无关。因此,所有处理都在信号处理程序内完成。我怎么能无限期地睡觉?

4 个答案:

答案 0 :(得分:12)

我相信你正在寻找pause功能:

http://pubs.opengroup.org/onlinepubs/9699919799/functions/pause.html

您可以执行以下操作:for (;;) pause();

答案 1 :(得分:8)

如果你只是在另一个线程上做某事,只需在该线程上调用pthread_join,它就会“永远”阻止。使用条件变量可以达到相同的效果。

答案 2 :(得分:4)

使用信号量!

使用sem_wait让您的线程在信号量上被阻止。一旦你需要通过使用来自另一个线程的sem_post唤醒你的线程信号信号。

答案 3 :(得分:1)

POSIX提供sigsuspend函数来等待信号。 (如另一个答案所述,pause也可以。)