【发布时间】:2009-06-16 05:18:37
【问题描述】:
大家好,我想知道线程安全数据和线程安全容器有什么区别
【问题讨论】:
标签: c++ visual-c++ stl
大家好,我想知道线程安全数据和线程安全容器有什么区别
【问题讨论】:
标签: c++ visual-c++ stl
线程安全数据:
一般指使用互斥锁、信号量或其他类似结构保护的数据。
如果已采取措施确保数据被认为是线程安全的:
互斥锁通常通过在一个线程修改共享数据时阻止对其他线程的访问来工作。这也称为临界区,RAII 是与临界区结合使用的常见设计模式。
根据 CPU 类型,某些原始数据类型(例如 int)和操作(增量)可能不需要互斥锁保护(例如,如果它们解析为机器语言中的原子指令)。然而:
线程安全容器:
是具有适当措施以确保对其进行的任何更改以线程安全的方式发生的容器。
例如,线程安全容器可以允许使用一组特定的公共方法插入或删除项目,这些方法确保使用它的任何代码都是线程安全的。
换句话说,容器类将互斥锁保护作为服务提供给调用者,用户不必自己滚动。
【讨论】: