Hello everyone,
Here is my code for review to see whether it is thread-safety. My question is, after remove the object instance from List buffer, I exit the lock synchronization block in method RemoveAndUseItem, is it thread safe to exit the lock synchronization and call method RemoveAndUseItem (method RemoveAndUseItem will only touch the removed instance)?
[Code]
List<Foo> Buffer;
object ListLock = new object();
void AddItem(Foo f)
{
lock (ListLock)
{
Buffer.Add(f);
}
}
void RemoveAndUseItem()
{
Foo LastItem;
lock (ListLock)
{
LastItem = Buffer[Buffer.Count - 1];
Buffer.RemoveAt(Buffer.Count - 1);
}
// no lock here? safe?
SafeUseItem(LastItem);
return;
}
void SafeUseItem(Foo f)
{
// use f here without synchronization control
}
[/Code]
thanks in advance,
George