|
>(タスクの切り替え処理をどのように起こせば良いでしょうか?)?
マルチタスクOSなら、複数のタスクを起動したときにOSが勝手に切り替えます。
自分で行う必要はありません。
逆に切り替わるタイミングを計るのが難しいので、
挙動がおかしくなるであろうプログラムもそれを出現させるのは難しいかもしれません。
次のプログラムをひたすら実行してみてください。
たまーに入力と出力の整合性がとれなくなるはずです。
そしてそれがなぜ起こるか考えてみてください。
#include <stdio.h>
int main(){
int i,j,v;
if(fork()){//子プロセスの起動
for(i=0;i < 2;i++){
printf("parent ?");//この行が実行されて、scanfに行く前にタスクが切り替わるとどうなるか?
scanf("%d",&j);
printf("parent:%d\n",j);
}
wait(&v);
}
else{
for(i=0;i < 2;i++){
printf("child ?");
scanf("%d",&j);
printf("child:%d\n",j);
}
}
return 0;
}
|