你怎么就得出是单线程了,linux显然不是。
你看到while 只是任务少,而这个进程又是while(1) 大部分时间占用了资源而已。
你ps看一下
内核里面有不同的调度策略,一般用的是时间片轮转。Linux里面的程序一般是主动放弃处理器使用权的,虽然,内核很多进程也是While(1),但是,在循环体中,调用的函数都是阻塞等待的函数,比如read,write,如果没有准备好的数据,就阻塞了。阻塞的结果就是让出处理器的使用权给其他进程跑,有的还故意用sleep来阻塞。但是,你的程序只用了死循环,但是里面都是轮询吧,没有阻塞 来让出处理器,所以,其他的进程都是毫秒级运行,你的程序一直在跑。 不出意外,你用top指令一定能看到你的处理器利用率超过99%。
关于你说的杀死进程,其实是使用KILL信号,进程捕获到KILL信号后自动上交资源,相当于皇帝“赐死”。有些信号可以被捕获作为回调,有些信号可以被进程忽略,有些信号则是让进程自我结束。CTRL+C本身也是发信号。但是,Ctrl+C是默认设定(如果对代码不做重映射修改的话)杀灭终端进程的。终端就是你开的那个小黑窗口,在小黑窗口里面./xxx运行程序。程序是和那个小黑窗口绑定的,所以你用Ctrl+C是可以杀死的。但是很多程序,比如你写的驱动,是在后台运行的。所以你的Ctrl+C是不管用的。只能先用
ps -aux | grep xxx,打印出你的进程号,然后执行kill -9 xxx进程号,来杀死进程。