老光着,对身体心理印象都不大好# Piebridge - 鹊桥
U*Z
1 楼
ThreadFoo()
{
std::vector va;
}
ThreadBar()
{
std::vector vb;
}
我认为va和vb不是同一个容器,占用不同的内存单元,因此没有线程安全的问题。但面
试官说两个线程都调用(触发)了vector模板类的构造函数,因此不是线程安全的,已
跪。
事后思考了一下,只有当vector的构造函数里有临界区(比如静态的类共享变量之类),
才有线程安全的问题?
Effective STL有提到:
对不同容器的多个写入者是安全的。多线程可以同时写不同的容器。
{
std::vector
}
ThreadBar()
{
std::vector
}
我认为va和vb不是同一个容器,占用不同的内存单元,因此没有线程安全的问题。但面
试官说两个线程都调用(触发)了vector模板类的构造函数,因此不是线程安全的,已
跪。
事后思考了一下,只有当vector的构造函数里有临界区(比如静态的类共享变量之类),
才有线程安全的问题?
Effective STL有提到:
对不同容器的多个写入者是安全的。多线程可以同时写不同的容器。