-
并发的方式
并发处理是同一时间段内有几个程序都在一个cpu中处于运行状态,但任一时刻只有一个程序在cpu上运行。
多进程、多线程、IO多路复用(通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。如select、poll、epoll)
-
进程
资源分配的基本单位,
Linux系统函数fork()可在父进程中创建一个子进程,在父进程接到新请求时,复制出一个子进程来处理,即父进程监控请求,子进程处理,实现并发处理。注意:必须是Linux系统,windows不能用fork。
-
进程的几种状态
(1)run(运行状态):正在运行的进程或在等待队列中等待的进程,等待的进程只要以得到cpu就可以运行
(2)Sleep(可中断休眠状态):相当于阻塞或在等待的状态
(3)D(不可中断休眠状态):在磁盘上的进程
(4)T(停止状态):这中状态无法直观的看见,因为是进程停止后就释放了资源,所以不会留在linux中
(5)Z(僵尸状态):子进程先与父进程结束,但父进程没有调用wait或waitpid来回收子进程的资源,所以子进程就成了僵尸进程,如果父进程结束后任然没有回收子进程的资源,那么1号进程将回收
-
线程
CPU调度和分配的基本单位,程序执行的最小单位。
在同一时间片只能有一个线程针对一个cpu执行指令,而且其他的线程必须被挂起。然后内核调度程序不断的唤醒/挂起线程来模拟多个任务的执行。
一个进程可以由很多个线程组成,线程间共享进程的所有资源。线程有自己的堆栈、局部变量。
线程的创建调用pthread_create
线程中执行时一般都要进行同步和