协程与多任务调度
在计算机科学中,多任务(multitasking)是指在同一个时间段内运行多个任务,现代计算机作为一个复杂的系统,运行的任务往往不止一个,所以多任务调度对于计算机来说尤为重要。现阶段多任务调度主要分为抢占式多任务和协作式多任务,抢占式多任务由操作系统决定进程的调度方案,而协作式多任务是当前任务主动放弃执行后,下一个任务继续进行。由于协作式任务管理受恶意程序的威胁更大,现阶段几乎所有的计算机都采用抢占式多任务管理。
现阶段,主要靠多进程或多线程的方式来实现多任务:
#include <stdio.h> #include <unistd.h> int main() { pid_t pid; pid = fork(); if(pid < 0){ printf("Fork Error!\n"); }else if (pid > 0){ printf("This is the parent Process! Process Id is %d, Child id is %d\n",getpid(),pid); int i = 0; while(i < 10){ printf("This is parent Process output of i %d!\n",i); i++; } }else if (pid == 0){ printf("This is the child Process! Process Id is %d, parent id is %d\n",getpid(),getppid()); int j = 0; while(j < 10){ printf("This is child Process output of j %d\n",j); j++; } } return 0; }