LockDetails GetReadLockDetails (int threadId, bool create)
{
int i;
LockDetails ld;
for (i = 0; i < read_locks.Length; ++i) {
ld = read_locks [i];
if (ld == null)
break;
if (ld.ThreadId == threadId)
return ld;
}
if (!create)
return null;
if (i == read_locks.Length)
Array.Resize (ref read_locks, read_locks.Length * 2);
ld = read_locks [i] = new LockDetails ();
ld.ThreadId = threadId;
return ld;
}
#endregion