进程:
进程是系统中能独立运行并作为资源分配的基本单位,进程拥有自己独立的处理环境和系统资源,是动态的,是运行在内存中的程序的执行实例。只要程序运行,此时就是进程,程序每运行一次,就会创建一个进程,进程的状态是变化的,其包括进程的创建、调度和消亡。
线程:
是用来执行具体功能和任务的,需要进程为载体,是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源,但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位。
多进程:
多进程即多个进程。
进程的调度进制是时间片轮转,上下文进行切换,多进程不是说一个进程执行完再执行另一个进程,而是交替执行的,一个进程执行一段时间,然后下一个进程在执行一段时间。
多线程:
多线程就是指一个进程中同时有多个线程正在执行。
进程切换时,用户空间也会切换,所以会增加系统开销增加系统开销,而一个进程中的多个线程共享一个进程的资源,所以线程切换时不用切换这些资源,效率会更高线程的调度机制跟进程是一样的,多个线程来回切换运行。
多线程更是有:多任务程序设计、并发程序设计、网络程序设计、数据共享的优点。
进程的创建
pid_t fork(void)
功能:在已有的进程基础上有创建一个子进程。
成功:
>0 子进程的进程号,标识父进程的代码区
0 子进程的代码区
失败:
‐1 返回给父进程,子进程不会创建
线程创建
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, 3 void *(*start_routine) (void *), void *arg);
功能:创建一个新的子线程
thread:当前创建的线程id
attr:线程的属性,设置为NULL表示以默认的属性创建
start_routine:线程处理函数,如果当前函数执行完毕,则子线程也执行完毕
arg:给线程处理函数传参用的
返回值:成功:0 失败:非0