进程线程对比总结以及对于生产者消费者的场景分析

进程是一个正在执行的程序,是在计算机上执行的程序实例,是能分配给处理器并由处理器执行的实体。进程信息在Linux下被放在一个叫做task_struct的结构体里。在多线程的情况下,进程通常被定义为资源分配的单位和保护的单位。

线程在Linux下也叫做轻量级进程,是程序执行的最小单位。

线程是存在于进程中,每个线程都有线程执行状态,在运行时会保存线程的上下文,具有独立的执行栈,并且有用于每个线程局部变量的静态存储空间,线程可以对所属进程的的内存和资源进行访问,也可以与同一个进程中的其他线程共享资源。

线程共享进程的地址空间与数据,当一个线程修改数据后,其他的进程会看到修改后的数据,线程相比较进程来说性能上占有很大优势。在一个已有的进程中创建一个全新进程的时间要少,因为创建进程会创建PCB,创建对应的地址空间,创建页表等,但是对于线程来说就不需要创建了,因为它与所属进程是共享进程地址空间的。相同的,销毁的时候对于线程也比较容易销毁,花费时间较少。线程也提高了不同执行程序间通信的效率。

进程与线程的关系表示(摘自《操作系统精髓与设计原理》)


/////////////////////点此查看线程的函数描述/////////////////////////

//////////////////点击打开线程生产者消费者代码链接//////////////

猜你喜欢

转载自blog.csdn.net/qq_36474990/article/details/80811877