当多个处理器工作时,进程是并发工作的。当多个线程访问某个公共数据区域时,就会发生竞争条件,一个线程可能会覆盖另一个值。
那么,如果是单处理器、单核环境,是否可以防止竞争条件的发生呢?
帮我解答一下这个困惑,谢谢。
单处理器环境中可能会发生竞争条件。根据维基百科竞赛条件 https://en.wikipedia.org/wiki/Race_condition发生在output is dependent on the sequence or timing of other uncontrollable events
单处理器环境可以支持同一进程或不同进程的多个线程,这些线程可能正在等待另一个线程在资源上让出。在单处理器环境中也可能发生死锁。
设想:
- T1:想要添加员工记录到文件“employee.txt”
- T2:想要计算“法律部门”的平均工资
- T3:想要删除已离职的员工
- T4:想要列出每个部门的员工人数
如果以上所有线程都在等待time=0
并提交给单个处理器,它将决定哪个线程先执行,第二个执行,依此类推。线程的优先级和产生顺序在不同的平台、场景等上有所不同。因此 T2 和 T4 可能不会给出一致的结果.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)