1.1.1 线程安全的定义

2013-10-07 16:02:29 · 作者: · 浏览: 81

1.1.1 线程安全的定义

依据[JCP],一个线程安全的class 应当满足以下三个条件:

多个线程同时访问时,其表现出正确的行为。

无论操作系统如何调度这些线程, 无论这些线程的执行顺序如何交织(interleaving)。

调用端代码无须额外的同步或其他协调动作。

依据这个定义,C++(www.cppentry.com) 标准库里的大多数class 都不是线程安全的,包括std::string、std::vector、std::map 等,因为这些class 通常需要在外部加锁才能供多个线程同时访问。