我是新来的并发编程。当我正在浏览同步,线程安全集合,原子包装类,锁之间的混淆时, 锁和同步通过使一段代码线程安全来完成相同的工作。为什么我们需要线程安全的集合或原子包装类呢?由于锁定将只允许单个线程访问代码,并且不会让集合或基元类型变得不安全。同步vs线程安全集合vs原子包装类vs锁
0
A
回答
2
这是一个非常广泛的问题,你问。问题是,并非所有这些东西都有单一严格的定义。例如,线程安全集合可能使用各种形式的同步(如锁或原子操作)来实现线程安全。但是,甚至连“线程安全”这个术语都没有明确定义!
然而,有一件事你错了肯定:同步是我们的目标,而锁,互斥体,原子能等都是手段来实现这一目标。同步意味着不同的线程以同步的方式访问资源。换句话说,他们协调访问,以便它们不会互相影响。顺便说一句:我在这里谈论线程,但不同的实体也可能是进程或甚至不同的计算机,但让我们先保持简单。
现在,你问使用“线程安全的集合或原子包装类”,为什么他们都需要在所有。答案很简单,这些东西在更高的层次上提供了不同的接口或服务。例如,当我有一个连接两个线程的FIFO时,它们如何同步对底层队列的访问并不重要。如果两个线程的接口已正确实现,则可以获得一定的保证。用锁来手动执行操作是可能的,但是很复杂,因此除了低级原语之外,将它们提供为高级构建块只会使软件开发更容易,结果更可靠。
最后一个提醒的其他问题:如开头所提到的,并不是所有的条款都与他们相关的普遍意义。因此,如果您提供了其他信息,特别是您打算使用的编程语言,它将有所帮助。
2
因为使用同步时需要小心。如果你滥用它,你可能会遇到性能问题。如果可能,使用线程安全集合通常对性能更好,并确保没有错误或死锁。
相关问题
- 1. 同步vs锁vs同步映射
- 2. 线程vs同步
- 3. 异步EF 6 vs包装同步EF
- 4. 线程安全VS异步信号安全
- 5. 安装VS 2008和VS 2010
- 6. Raw数组vs vs集合
- 7. decaf线程vs boost线程vs全线程
- 8. 线程安全控制 - 崩溃VS 2008
- 9. 不变性VS线程安全
- 10. Java线程:争用条件vs同步
- 11. 多线程与锁vs单线程?
- 12. Java同步vs死锁示例
- 13. j_security_check vs程序安全
- 14. 任务并行库vs原生线程同步
- 15. MSI安装程序VS 2008
- 16. 束VS捆扎机/捆束VS安装
- 17. VS 2005安装 - HKCU
- 18. VS安装问题
- 19. VS 2017安装库
- 20. NSIS Vs的维克斯Vs的任何其它的安装包
- 21. 进程vs线程(用户vs内核)
- 22. 多线程类vs方法
- 23. 线程VS ParameterizedThreadStart
- 24. 集成安全性= false vs省略
- 25. vs 2010安装vs vs 2012之后,无法看到vs 2010运行选项
- 26. Spiral vs Throwaway原型vs进化原型
- 27. 合同VS例外
- 28. 线程安全惰性初始化:静态vs std :: call_once vs双重检查锁定
- 29. SPARC CPU VS线程VS核心
- 30. API vs工具包vs框架vs库
谢谢@Ulrich ..语言是java ...的解释是非常好的和描述性的 –