研究了Linux内核的链表之后,悟空第一次被Linux内核高超的设计技巧所吸引,一个简单的双向链表中竟然包含了这么多的道理。悟空深深的被这些看似简单,却十分高效的设计所震撼。所以悟空决定好好的研究一下Linux内核管理数据的数据结构。悟空决定研究的第二数据结构就是队列。
然而研究完队列之后悟空感觉有点失望,他无法找到队列的设计中有什么令他感到震惊的地方,更没有什么地方让悟空感到神奇。无非都是一些枯燥无味的操作:
创建队列:int kfifo_alloc(struct kfifo,unsigned int size,gfp_t gfp_mask);
推入函数:unsigned int kfifo_in(struct kfifo *fifo,const void *from,unsigned int len);
摘取函数:unsigned int kfifo_out(struct kfifo *fifo, void *to,unsignend int len);
偷窥函数:unsigned int kfifo_out_peek(struct kfifo *fifo, void *to,unsignend int len,unsigned offset);
悟空感觉只有看到“偷窥函数”的时候,内心之中才能感到一丝无名的兴奋。看着这些函数,悟空开始对自己的理解能力有点怀疑了,是不是自己的资质不够,无法体会这些函数背后深藏的含义。悟空决定再次去请教一下达人先生,但是由于上次悟空没有教达人先生七十二变。所以悟空决定换个身份再去请教达人先生,所以悟空摇身一变变成了猪八戒的样子。
“八戒”曰:师傅,为什么Linux内核中的队列设计的这么简单啊?其中有什么奥秘吗?
达人(心声:看来这猪头最近开窍了,竟然会反问为什么啦?)曰:你不是已经找到了队列设计的奥秘所在了吗?简单就是队列设计的最大的奥秘啊,一个问题如果能够用简单的方式解决,你何必还要找一个复杂的方法来解决呢?你不是给自己找别扭吗?
“八戒”这才恍然大悟,原来简单就是队列的最大奥秘。想到这“八戒”头也不回的走了。