线程的并发所引起的问题

1. 并发和竞态:

并发:多个执行单元同时、并行被执行
竞态:当并发的执行单元对共享资源访问时会引起静态

还有一个概念:
临界区:访问的共享资源的代码区域

如何判断是不是会有竞态记住这句话:
只要并发的多个执行单元存在对共享资源的访问,竞态就有可能发生

2. 在linux中,主要的竞态发生在如下的3种情况:

  1. SMP(对称多处理器) 的多个 CPU
    SMP 的特点就是多个 CPU,系统总线只有一套。
  2. 单 CPU 内进程和抢占它的进程
    linux 2.6 内核之后支持抢占调度。
    抢占调度指的是 一个进程在内核执行的时候可能被另一高优先级进程打断,
    进程与抢占它的进程访问共享资源的情况类似于 SMP 的多个 CPU
  3. 中断(硬中断、软中断、Tasklet、底半部) 与进程之间
    中断可以打断正在执行的进程,如果中断处理程序访问进程正在访问的资源,则竞态也会发生。

解决竞态问题的途径是保证对共享资源的互斥访问
在linux驱动中可采取的互斥途径:

  • 中断屏蔽
  • 原子操作
  • 自旋锁
  • 信号量

3. 优缺点:

项\类型等待方式控制区域请求资源速度常用在的函数
自旋锁忙等待(在内核的运行态)不能调用可能引起进程调度的函数不能调用睡眠函数要求短平快相对较快中断处理函数
信号量睡眠等待(在睡眠态)无限制相对较慢普通函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值