Re: Thread safety
<arun.darra@gmail.com> wrote in message
news:1181163439.502898.191770@i13g2000prf.googlegroups.com...
On Jun 6, 8:25 pm, Gianni Mariani <gi3nos...@mariani.ws> wrote:
arun.da...@gmail.com wrote:
Are the following thread safe:
Assuming you're using either GCC, VC++ or the Intel compiler...
1. Assuming Object is any simple object
Object* fn()
{
Object *p = new Object();
return p;
}
Safe if you use the supplied new operator.
2. is return by value thread safe?
Safe if the copy constructor is thread safe.
3. int *p = new int
is this thread safe?
Safe assuming that p is not used before it is initialized.
Thanks for the reply... i just have 2 quick question:
1. You said that if i use the default new operator then using
Object *p = new Object();
is thread safe right...
but if i have a condition like:
If(thread-1)
Object1* p1 = new Object1();
else if(thread2)
Object2* p1 = new Object2();
and if both thread1 and thread2 are active at the same time and
running the above code then will new still be thread safe?
Each thread creates it's own local Object *p since it's declared locally.
Each thread can do what it wants to it since other threads, at this point,
can't touch the threads copy. What you do with it when you return it is
another matter.
2. Is the following thread safe:
void fn()
{
static Object o;
}
assuming multiple threds are active
Well, it is safe in this code, since you're not doing anything with o I
believe. Once you try to access o in the function, then I dont' believe
it's thread safe since all threads would share the same instance of o.