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;
}