I have a thread safety question. Say I have the following:
class Class1
{
//instance constructor, member, and method
private Class1(SomeEnum x)
{
m_enumValue = x;
}
private SomeEnum m_enumValue;
public SomeEnum EnumValue
{
get{return m_enumValue;}
}
//static constructor, member, and method
static Class1
{
m_Array = new Class1[5];
m_Array[0] = new MyObject(SomeEnum.Val1);
//init other elements with new instances of Class1
}
private static Class1[] m_Array;
public static Class1[] GetSetOfValues()
{
Class1[] temp = new Class1[5];
Array.Copy(m_Array, temp);
return temp;
}
}
Basically there is a static array that has no chance of ever being
updated and callers need their own copy of that array which they will
change (sort differently).
I know the instance objects are thread safe because they are read only,
but what about multiple threads calling GetSetOfValues at the same
time. Do I need to lock the private array while calling Array.Copy?
Thanks,
Eric Marvets
Mattias Sj?gren - 14 Apr 2005 21:36 GMT
>I know the instance objects are thread safe because they are read only,
>but what about multiple threads calling GetSetOfValues at the same
>time. Do I need to lock the private array while calling Array.Copy?
No
Mattias

Signature
Mattias Sjögren [MVP] mattias @ mvps.org
http://www.msjogren.net/dotnet/ | http://www.dotnetinterop.com
Please reply only to the newsgroup.
saurabhgarg2k@gmail.com - 19 Apr 2005 18:18 GMT
Hi there,
Since Everything is Static and u r not modifying but accessing the
value of the Static Array, so there is no need of Lock while calling
Array.Copy.
Regards
Saurabh Garg