fork的问题
我在linux下写了一个求和小程序看看fork如何工作:
//sum1.c
#include <stdio.h>
#include <stdlib.h>
int sum;
main()
{
int i;
sum=0;
for(i=1;i<=1000;i++)
{
printf("i value is %d\n",i);
fflush(stdout);
sum+=i;
}
printf("sum is %d\n",sum);
exit(0);
}
运行后发现系统在i到190多的时候,有一次cpu进程切换。
我感觉不明显,将程序里面添加了内循环变成1000*1000次:
//sum2.c
#include <stdio.h>
#include <stdlib.h>
int sum;
main()
{
int i,j;
sum=0;
for(i=1;i<=1000;i++)
{
for(j=1;j<=1000;j++)
{
if(900==j){
printf("i value is %d\n",i);
fflush(stdout);
sum+=i;}
}
}
printf("sum is %d\n",sum);
exit(0);
}
结果还是只有一次cpu切换。
这是为什么?在我想象中cpu切换进程应该是基本上稳定的吧。大大们帮忙解释一下。