C++对象的线程安全性。
最近忽然有一个想法,就是C++对象本身是线程安全的吗?
e.g. pesudo code
class A
{
public:
void Set( int i )
{
lock lk;
this->i = i;
}
public:
int i;
};
大概有这么一个类,我想问的是。
t( A &a )
{
a.Set( 10 );
}
main( )
{
A a;
CreateThread( t );
a.Set( 5 );
wait(t);
}
因为A对象本身提供了线程安全的机制来访问其内部成员,但是由于t()和main()都访问了同一个对象a,而且是通过引用(即指针)访问,这样做是安全的吗?还是需要另一个mutex?