面试题,当时正问我写内核模块是吧什么什么的,突然问我这个题,瞬间懵了,想半天在内核没法这样玩啊,,,没想出来
然后面试官提示:怎么才能让进程切换呢? 我说:除了时间片就是阻塞操作。。 面试官说:对啊,怎么编程让两个进程通讯切换呢
我楞了半天才明白是要在用户态层面上去求这个消耗时间,,,大概20S,面试官说:没事不会下一题吧 ,好悲剧!!!!
回来搜下,发现LMBENCH这玩意,就仿照着敲下试试。。。
很简单,20个管道+20个线程 首尾相接构成环,主线程先写,其他读操作阻塞等待,读返回立马写到下个管道,这样强制切换线程。。。。
转个上万圈 取平均值 得到的是 管道耗时+进程切换耗时
单线程 不停的读写管道上万次 取均值,就是单独的 管道耗时。。。
一减 就是了。。。。
蛋疼,,,,,,,面试的好烂
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include<pthread.h>
i