线程知识点(一)


一、线程是什么?

线程是程序最基本的运行单位,真正运行的是进程中的线程。

线程是大多数操作系统支持的调度单位, 执行单元,某些系统不支持线程技术。
是允许应用程序并发执行多个任务的一种机制,同一程序中的所有线程均会独立执行相同程序。
共享同一份全局内存区域,其中包据初始化数据段、未初始化数据段以及堆内存段。

二、进程与线程的关系

  1. 一般情况下进程包含线程, 线程比进程更轻量(体积更小,开销更小)
  2. 线程是最小的调度单位,进程是最小的分配资源单位(主要指内存资源),进程也是一种调度单位。
  3. 在多线程模型中要避免进程退出,否则多线程也会终止, 因为进程是线程的容器
  4. 线程创建于进程中,于进程共享资源,线程用进程的内存资源,完成特定任务,如果在意内存开销 ,使用多线程技术是一个很好的选择
  5. 线程就是寄存器和栈 (线程可以占用时间片使用cpu,可以通过保存和回复处理器现场避免寄存器冲突, 所以线程是一个合格的调度单位)
  6. 进程创建过程中需要资源管理、而线程不涉及,而是共享(栈独自占用)
    仅有计数器,少量寄存器和栈,其余堆,变量,指针,引用,文件等共享(传递效率高)
  7. 线程能减少并发执行时间和空间开销:因为线程具有相问的地址空间,则切换时候不需要切换页表

三、种类

内核级线程

系统支持的线程,可以为其分配内核对象,与进程一样获取cpu
可以得到更多系统资源, 缩短任务完成时间,所有的线程资源分配,访问和切换都要系统干预,开销较大

用户级线程

系统无法识别用户级线程,无法将资源分发给普通线程
如果主线程sleep(0)了,根据就近原则可以给相邻线程资源
普通线程虽然无法被系统直接分发资源, 但是它可以使用cpu,只要主线程释放交换给他即可
用户线程是安装在进程用户空间的,所以完成线程切换或访问线程资源在用户空间即可完成,无需系统干预

混合型线程

可以为线程分配内核对象,得到更多的时间片,线程安装在用户层, 较少线程调度开销
混合型线程支持的系统比较少


总结

这就是我大概的理解,线程与进程都是很重要的知识点!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力找工作的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值