单处理器环境可以防止竞争条件吗?
can single processor environment prevent race condition?
当多个处理器工作时,进程是并发工作的。竞争条件发生在多个线程访问一些公共数据区域时,一个可能会覆盖另一个值。
那么,如果是单处理器单核环境,能不能避免race condition的发生呢?
帮我理清这个困惑,谢谢。
在单处理器环境中可能会出现竞争条件。根据 Wiki Race Condition 发生在 output is dependent on the sequence or timing of other uncontrollable events
时
单处理器环境可以支持不同进程的同一进程的多个线程,这些线程可能正在等待另一个线程在资源上产生。死锁也可能发生在单处理器环境中。
场景:
- T1:想要将员工记录添加到文件 "employee.txt"
- T2:想要计算 "legal dept"
的平均工资
- T3:想要删除已离开的员工
- T4:想要列出每个部门的员工人数
如果以上所有线程都在time=0
等待并提交给单个处理器,它将决定哪个线程先行,第二行,依此类推。线程的优先顺序和产生的顺序在不同的平台、场景等上有所不同。因此 T2 和 T4 可能不会给出一致的结果。
当多个处理器工作时,进程是并发工作的。竞争条件发生在多个线程访问一些公共数据区域时,一个可能会覆盖另一个值。
那么,如果是单处理器单核环境,能不能避免race condition的发生呢?
帮我理清这个困惑,谢谢。
在单处理器环境中可能会出现竞争条件。根据 Wiki Race Condition 发生在 output is dependent on the sequence or timing of other uncontrollable events
单处理器环境可以支持不同进程的同一进程的多个线程,这些线程可能正在等待另一个线程在资源上产生。死锁也可能发生在单处理器环境中。
场景:
- T1:想要将员工记录添加到文件 "employee.txt"
- T2:想要计算 "legal dept" 的平均工资
- T3:想要删除已离开的员工
- T4:想要列出每个部门的员工人数
如果以上所有线程都在time=0
等待并提交给单个处理器,它将决定哪个线程先行,第二行,依此类推。线程的优先顺序和产生的顺序在不同的平台、场景等上有所不同。因此 T2 和 T4 可能不会给出一致的结果。