首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程安全数据和线程安全容器

线程安全数据和线程安全容器
EN

Stack Overflow用户
提问于 2009-06-16 05:18:37
回答 1查看 1.5K关注 0票数 2

大家好,我想知道线程安全数据和线程安全容器之间的区别

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-16 05:28:33

线程安全数据

  • 通常是指使用互斥锁、信号量或其他类似的constructs.
  • Data进行保护的数据,如果已采取措施确保以下情况,则认为它是线程安全的:

代码语言:javascript
复制
- It can be _modified_ from multiple threads in a controlled manner, to ensure the resultant data structure doesn't becoming corrupt, or lead to race conditions in the code.
- It can be _read_ in a reliable fashion without the data become corrupt during the read process.  This is especially important with STL-style containers which use iterators.

  • Mutexes通常通过在一个线程修改共享数据时阻止对其他线程的访问来工作。这也被称为临界区,RAII是一种在CPU类型上与critical sections.
  • Depending一起使用的通用设计模式,一些原始数据类型(例如int)和操作(增量)可能不需要互斥保护(例如,如果它们解析为机器语言中的原子指令)。然而:

代码语言:javascript
复制
- It is bad practice to make any assumptions about CPU architecture.
- You should always code defensively to ensure code will remain thread-safe regardless of the target platform.

线程安全容器

互斥锁容器是一些容器,它们具有确保对它们所做的任何更改都以线程安全的方式发生的适当措施。例如,线程安全容器可以允许使用一组特定的公共方法来插入或删除项,这些方法确保使用它的任何代码都是thread-safe.

  • In的。换句话说,类将互斥锁保护作为服务提供给调用者,而用户不必滚动自己的服务。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/999699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档