UNIX线程 - 关于睡眠以及如何让线程工作一段时间?

时间:2011-12-02 05:14:50

标签: multithreading unix operating-system

在UNIX中,如果一个线程调用了sleep函数,那么整个进程在那段时间内不会做任何工作,或者只有睡眠调用线程在那段时间内不会做任何工作吗?

在一个多线程程序中,我想让一个线程工作一段时间,如何实现呢?

1 个答案:

答案 0 :(得分:1)

男人睡觉说:

The sleep() function suspends execution of the calling thread until either seconds seconds have elapsed
or a signal is delivered to the thread and its action is to invoke a signal-catching function or to
terminate the thread or process.  System activity may lengthen the sleep by an indeterminate amount.

This function is implemented using nanosleep(2) by pausing for seconds seconds or until a signal
occurs.  Consequently, in this implementation, sleeping has no effect on the state of process timers,
and there is no special handling for SIGALRM.

所以“只有调用线程”。

关于你的第二个问题:它大多超出了你的控制范围,大多数人都应该重新考虑他们的设计并将其留给操作系统 - 你的操作系统控制你的线程的执行。您可以使用条件和信号在某种程度上协调线程的操作 。通常更好/更容易使用更少的线程和管理任务,而不是直接使用线程。即使你想要计时,也有很多工作要试图在运行时弄清楚你的线程有多少时间。