我想让线程无限期地睡眠。我想这样做的原因是因为我的程序只在收到信号时才采取行动,并且在主线程中无关。因此,所有处理都在信号处理程序内完成。我怎么能无限期地睡觉?
答案 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
也可以。)