前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >并发与竞争

并发与竞争

作者头像
用户9736681
发布2022-12-06 17:06:30
2630
发布2022-12-06 17:06:30
举报
文章被收录于专栏:嵌入式随笔嵌入式随笔

适用场景

并发与竞争是在多个线程、进程或中断访问共享资源时产生的。这个共享资源看着有点笼统,具体就是全局变量或者数组,经过总线访问的数据都有可能。

处理办法

处理竞争的方法通常有原子操作、自旋锁、信号量、互斥锁等。

原子操作针对的是变量处理,像是全局变量就可以通过原子操作处理;

锁中间带进程切换的要用互斥锁,用自旋锁会造成死锁;

中断中要用自旋锁,用互斥锁会导致休眠(这个不能用并不是不能做到,而是不应该这样做。导致休眠可能会有产生很多问题,比如调用个阻塞的线程之类的,也可能会产生死锁,也可能产生大量延迟);

互斥锁的开销要比自旋锁大不少,如果都可以使用的话,使用自旋锁可以减小开销,自旋锁主要用于多核的并发处理。

以上指的是轮训状态,带优先级的抢占或者不同优先级的中断需要更需要设计者根据具体的考虑了,比如自旋锁要是被更高级的抢占了就会导致死锁。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式随笔 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 适用场景
  • 处理办法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档