Linux系统编程(15)——线程的基本概念、和进程的区别

  线程

基础概念:

线程相比进程的优点:

  • 创建和销毁开销更小
  • 调度的开销更小
  • 线程占用资源更小    注:原因是:线程用同一个虚拟地址空间

线程相比进程的缺点:

  • 性能损失
  • 健壮性降低(核心问题):一个线程异常终止会导致进程异常终止(因为同一个虚拟地址空间,注意是进程终止
  • 编程难度增大:1)对线程的可靠性要求更高        2)线程安全问题

多线程/多进程应用场景:

1.CPU密集型

2.IO密集型

  • a)通过网络进行输入输出----例如下载小说
  • b)响应UI界面(界面显示,数据计算要多线程,因为防止数据计算太久了,界面卡死。)

线程之间的共用资源:

  • 虚拟地址空间
  • 文件描述符表

线程之间的不共用资源:

  • 栈(函数调用栈,局部变量等)
  • 上下文信息:(CPU中的寄存器)
  • errno(错误码,每个线程有自己的 errno)  注:也像栈那样的包含

    含义示例图:

1.线程也不是越多越好:达到一定数目就没法提升效率了
2.线程多了就会多个线程访问同一个资源,就会打架(互斥)。
3.某个线程得不到执行的机会,线程饥饿(同步)。
4.如果某个线程崩溃,异常终止,整个进程就异常终止。 注意是进程,也就是其他线程同样异常终止。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值