可以选择使用原子操作还是使用不可变类型来设计并发/并行系统,这是正确的说法吗? IE。原子操作导致设计原子共享状态的系统,而不可变类型导致设计避免完全共享的系统?这两种设计是本质上可以互相替代(解决相同的基础问题)还是解决不同的问题(意味着可能必须同时使用原子操作和不变类型来设计完全并发安全的系统)?
最佳答案
虽然这两个概念都与并发系统相关,并且都保证不会读取任何中间状态,但它们却截然不同,并且适合不同的情况。例如,迭代不可变的数据结构可确保正确且“安全”的迭代,而可变的数据结构即使迭代操作是原子的,对于迭代也不是安全的。另一方面,原子地更改共享/中央数据存储区可确保永远不会读取不正确的数据,而不可更改性则无关紧要,因为存储区必须更改。
关于multithreading - 原子性和不变性是并发/并行编程中解决相同问题的两种不同方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44728784/