linux下的多线程

多线程:包括线程概念/线程控制/线程安全/线程基本应用

多任务处理:多创建几个进程,一个进程就有一个pcb,能够串行化的完成一个任务,在一个进程中多创建几个pcb,pcb是调度程序运行的描述,有多少个pcb就有多少个执行流程,

什么是线程?

线程是一个进程内部的控制序列,线程是进程中的一条执行流,在linux下通过pcb实现,因此实际上linux下的线程就是一个pcb,并且linux下的pcb共用一个虚拟地址空间,相较于传统pcb更加轻量化,也被称之为轻量级进程。

 多线程是同时处理,只有一个虚拟地址空间,多进程各有各的虚拟地址空间和执行代码段。

进程是操作系统资源分配的基本单位;(操作系统会为一个程序的运行分配所需的所有资源)

线程是cpu调度的基本单位。

linux下的进程其实是一个线程组,一个进程中可以有多个线程(多个pcb),线程是进程中的一条执行流。一个进程中至少会有一个线程。

创建线程会伴随在内核中创建一个pcb来实现程序的调度,作为进程中的一条执行流。

进程就是多个线程的一个合集,并且这个进程中的所有pcb共用进程中的大部分资源(程序运行时,操作系统为程序运行所分配的所有资源)。

线程之间的独有与共享:

独有:标识符,寄存器,信号屏蔽字,优先级。

共享:虚拟地址空间(代码段/数据段),文件描述符表(IO信息),信号处理的回调函数(SIG_IGN忽略、SIG_DFL默认或自定义),当前工作目录,用户id和组id。

为什么信号是先注销,再处理?

信号时针对整个进程通知事件进行处理的,但是一个信号只需要被处理一次就够了,然而一个进程会有多个执行流,到底谁处理这个事件(谁拿到时间片,谁就能处理),有的线程不希望操作被打断,就可以屏蔽这个信号。

使用vfork创建一个子进程;父子进程共用同一个虚拟地址空间,但是父进程会阻塞(父进程阻塞的原因是防止调用栈紊乱,数据紊乱)直到子进程exit或者程序替换;

fork(写时拷贝,修改的时候开辟空间)不仅会

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值