在linux的内核中,有很多睡眠相关的函数,比如sleep_on,当然也有wake_up,睡眠的意义就是不能再运行了,那么睡眠总要有个地方啊,我们睡眠都要有个床,按照人性化设计出来的linux内核也应该有个睡眠用的床,这是对的,但是,睡眠一定要在床上吗?非也!
就好像现代的白领们,习惯就很不好,总喜欢伏案而小憩,这样不但不解乏而且还不利于健康,不管怎么说也算是一个休息方式,另外闲着没啥事的时候也会这样,但是躺在床上的睡眠一般都是必须的睡眠,而且都是确定的,不是临时的,比如如果你想睡上一觉,那么你就要上床,正好和伏案相反,伏案的意义是当时不是你睡觉的时间,只是万不得已了,太困了才勉强这样的,这些人要么是自己作的,要么就是人民的公仆,很累的那种。我们看一下linux内核中进程的睡眠,也就是这两种,一种是睡眠在队列,另一种就是睡眠在原地,其中第一种睡眠在队列就是:
static long __sched sleep_on_common(wait_queue_head_t *q, int state, long timeout)
就好像现代的白领们,习惯就很不好,总喜欢伏案而小憩,这样不但不解乏而且还不利于健康,不管怎么说也算是一个休息方式,另外闲着没啥事的时候也会这样,但是躺在床上的睡眠一般都是必须的睡眠,而且都是确定的,不是临时的,比如如果你想睡上一觉,那么你就要上床,正好和伏案相反,伏案的意义是当时不是你睡觉的时间,只是万不得已了,太困了才勉强这样的,这些人要么是自己作的,要么就是人民的公仆,很累的那种。我们看一下linux内核中进程的睡眠,也就是这两种,一种是睡眠在队列,另一种就是睡眠在原地,其中第一种睡眠在队列就是:
static long __sched sleep_on_common(wait_queue_head_t *q, int state, long timeout)
{
本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1273408