我需要暂停执行主线程而不使用sleep语句。 是否有任何函数或状态值显示其他线程的活动状态,如java中的isalive()?
答案 0 :(得分:3)
pause()
经常运作良好;它暂停执行直到收到信号。
答案 1 :(得分:1)
标准C无法暂停主线程,因为标准C没有线程概念。 (C201X中的情况发生了变化,但标准的新版本尚未完成,并且没有实现。)
偶数sleep()
(这是一个函数,而不是语言定义的语句)是特定于实现的。
因此,如果不知道您正在使用什么环境,就无法回答您的问题。你有多个线程吗?如果是这样,你使用什么线程库? Pthreads? Win32 threads?
为什么sleep()
不符合您的要求? (可能是因为它会暂停所有线程,而不仅仅是当前线程。)
(提示:每当你问“如何在不使用Y的情况下做X?”时,请告诉我们为什么你不能使用Y.)
请参阅您正在使用的任何线程库的文档。它应该提供满足您需求的功能。
答案 2 :(得分:0)
一种非常简单的方法是使用像getchar()
这样简单的东西。
其他方法可能是等待pthread_cond_wait
的信号(或不同线程API中的任何其他类似函数)。
其他方法可能是紧密循环并使用信号量(或类似全局变量值之类的东西)等待其他线程完成。
无论如何,有几种选择。你没有详细说明你的问题,告诉你这里最好的选择。
答案 3 :(得分:0)
select()通常是一个不错的选择。
在Linux上,epoll()通常是select()的一个很好的替代方案。
每个程序,“线程”与否,总是有“主线程”。但是,如果您实际使用的是线程,请查看pthread_cond_wait().