作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设有一个函数(指令集 foo())可以操作一些数据(全局)。每个执行此函数(foo())的进程都会生成两个线程。当这两个线程在两个不同的处理器核心上同时执行时,如何处理并发和数据保护(竞争条件)?
对于并发和数据保护,对于上述情况,单核和多核处理器的主要区别是什么?
最佳答案
这是一个非常广泛的问题。有不同的技术可以解决这个问题。从用户的角度来看,最基本的想法是获取全局数据的锁(例如:POSIX 中的互斥锁),执行一些更新并释放锁。即使您获取了锁,其他线程读取相同数据时也可能会出现不一致的问题(请参阅 Readers-writers )。因此,您必须访问读锁(请参阅 here )。这是处理并发的基本思想。
目前,多核系统或单核线程的并发和数据保护是相似的,因为所有核心都可以看到所有内存(除了本地缓存)。如果实现适当的锁定机制,那么操作系统将负责缓存一致性。基本上,从用户的角度来看,单核和多核中的线程是相同的。
关于并发: How to handle a single function(set of instruction) running in two threads on two different cores simultaneously?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57310108/
我是一名优秀的程序员,十分优秀!