U**Z 发帖数: 80 | 1 ThreadFoo()
{
std::vector va;
}
ThreadBar()
{
std::vector vb;
}
我认为va和vb不是同一个容器,占用不同的内存单元,因此没有线程安全的问题。但面
试官说两个线程都调用(触发)了vector模板类的构造函数,因此不是线程安全的,已
跪。
事后思考了一下,只有当vector的构造函数里有临界区(比如静态的类共享变量之类),
才有线程安全的问题?
Effective STL有提到:
对不同容器的多个写入者是安全的。多线程可以同时写不同的容器。 |
s**x 发帖数: 7506 | |
g*********e 发帖数: 14401 | 3 your interviewer is a sucker |
s****a 发帖数: 794 | |
b**********5 发帖数: 7881 | 5 u should write an email to the company recruiter, and tell that recruiter
that the interviewer sucks!
and maybe cc interviewer and his manager's emails if u have one
【在 U**Z 的大作中提到】 : ThreadFoo() : { : std::vector va; : } : ThreadBar() : { : std::vector vb; : } : 我认为va和vb不是同一个容器,占用不同的内存单元,因此没有线程安全的问题。但面 : 试官说两个线程都调用(触发)了vector模板类的构造函数,因此不是线程安全的,已
|
U**Z 发帖数: 80 | 6 大部分版本的STL实现中,vector的构造函数中应该没包含静态或者全局的共享变量吧?
不过再想想,面试官还是可以辩解说不排除有某种版本的实现就在vector的构造函数中
访问了共享变量呀。 |
t********c 发帖数: 28 | 7 今天两个帖子都是喷面试官的
换个角度想。。这种水平还硬要刷存在感的面试官如果以后review你代码,你愿意在这
家公司工作么
所以还请爆一下公司名字,给大家提个醒 |
b*******w 发帖数: 56 | 8 百分之百支持楼上说的。 既然不去报一下公司和大组名字。 已警后人。 |