Linux线程和进程的区别

我们创建进程一次只能做一件事,如果想要同时做几件事,我们就得创建多进程,但是多进程之间的相互沟通是比较麻烦的,比如内存共享,描述符共享,互斥与同步等等而且在效率上也不如线程快捷。

在有了多线程以后,我们就可以在同一个进程中做多件事情。

进程又被认为是执行中的程序;而线程是轻量级的进程。

线程的资源:

一个进程中的大部分信息对该进程的所有线程都是共享的;

  •  可执行程序的代码;
  • 程序的全局内存;
  • 堆内存;
  •  栈;
  • 文件描述符;

当然线程还有一些自己独享的资源:

  • 线程ID;(pthread_t此数据类型用一个结构来实现)
  • 线程自己的寄存器值;
  • 线程运行栈;
  • 调度优先级和调度策略;
  • 信号屏蔽字;
  • Errno变量;
  • 线程私有数据;

线程与进程的区别:

当一个进程被创建时,自动就有一个线程在运行,该线程就是主线程(main函数运行的那个线程),我们可以在主线程中调用pthread_create函数来创建一个线程,也可以在其他线程调用线程创建函数。

实际上,真正的程序执行体是进程中的线程!

所以可以理解为,进程是一种空间上的概念,它为所有的执行体(线程)提供必要的资源(文件,文件描述符,运行代码等),而线程是时间上的概念,他类似于动态的指令执行过程。

可以把进程理解为一个提供了环境和资源的工厂,而真正干活的就是工厂中的工人(线程)。
最后,再来总结下线程的状态:

线程只有3种状态:就绪、执行、阻塞

线程存在5种基本的操作来切换线程的状态:派生、阻塞、激活、调度、结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值