一个例子让你看清线程调度的随机性( 二 )
value1 = count; value2 = count;
时序图如下:
文章插图
如上图所示:
- 时刻n , 主线程获得mutex , 从而进入临界区;
- 时刻n+1 , 时间片到了 , 切换到子线程;
- n+2时刻子线程申请不到锁mutex , 所以放弃cpu , 进入休眠;
- n+3时刻 , 主线程释放mutex , 离开临界区 , 并唤醒阻塞在mutex的子线程 , 子线程申请到mutex , 进入临界区;
- n+4时刻 , 子线程离开临界区 , 释放mutex 。
总结实际项目中 , 可能程序的并发的情况可能会更加复杂 , 比如多个cpu上运行的任务之间 , cpu运行的任务和中断之间 , 中断和中断之间 , 都有可能并发 。
有些调度的概率虽然很小 , 但是不代表不发生 , 而且由于资源同步互斥导致的问题 , 很难复现 , 纵观Linux内核代码 , 所有的临界资源都会对应锁 。
多阅读Linux内核源码 , 学向大神学习 , 与大神神交 。正所谓代码读百遍 , 其义自见! 熟读代码千万行 , 不会编写也会抄!
关于内核和应用程序的同步互斥的知识点 , 可以查看一口君的其他文章 。
【一个例子让你看清线程调度的随机性】更多Linux干货 , 请关注一口Linux
- 车企|华为不造车!但任正非加了一个有效期,3年
- 同轴心配合|用SolidWorks画一个直角传动,画四个零件就行
- 先别|用了周冬雨的照片,我会成为下一个被告?自媒体创作者先别自乱阵脚
- 丹丹|福佑卡车创始人兼CEO单丹丹:数字领航 驶向下一个十年
- 发展|新基建发展迅猛,必然会是一个巨大的市场机遇
- 涡轮|看法米特涡轮流量计如何让你得心应手
- 缺点|骁龙865+12GB已降至2399,X轴马达+55W快充,缺点只有一个
- 空间|垃圾文件正在吞噬你的C盘空间用这四种方法,还你一个干净的C盘
- 商业|AC有望建立一个商业帝国吗?
- 中国汽车|2020年,我们攒了一个局,串了一条链,下了一盘棋