80 lines
1.4 KiB
C#
80 lines
1.4 KiB
C#
using System;
|
|
|
|
namespace System.Threading
|
|
{
|
|
// Token: 0x02000613 RID: 1555
|
|
internal class LockQueue
|
|
{
|
|
// Token: 0x060038D3 RID: 14547 RVA: 0x000C4378 File Offset: 0x000C2578
|
|
public LockQueue(ReaderWriterLock rwlock)
|
|
{
|
|
this.rwlock = rwlock;
|
|
}
|
|
|
|
// Token: 0x060038D4 RID: 14548 RVA: 0x000C4388 File Offset: 0x000C2588
|
|
public bool Wait(int timeout)
|
|
{
|
|
bool flag = false;
|
|
bool flag2;
|
|
try
|
|
{
|
|
lock (this)
|
|
{
|
|
this.lockCount++;
|
|
Monitor.Exit(this.rwlock);
|
|
flag = true;
|
|
flag2 = Monitor.Wait(this, timeout);
|
|
}
|
|
}
|
|
finally
|
|
{
|
|
if (flag)
|
|
{
|
|
Monitor.Enter(this.rwlock);
|
|
this.lockCount--;
|
|
}
|
|
}
|
|
return flag2;
|
|
}
|
|
|
|
// Token: 0x17000B02 RID: 2818
|
|
// (get) Token: 0x060038D5 RID: 14549 RVA: 0x000C4430 File Offset: 0x000C2630
|
|
public bool IsEmpty
|
|
{
|
|
get
|
|
{
|
|
bool flag;
|
|
lock (this)
|
|
{
|
|
flag = this.lockCount == 0;
|
|
}
|
|
return flag;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060038D6 RID: 14550 RVA: 0x000C4480 File Offset: 0x000C2680
|
|
public void Pulse()
|
|
{
|
|
lock (this)
|
|
{
|
|
Monitor.Pulse(this);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060038D7 RID: 14551 RVA: 0x000C44C4 File Offset: 0x000C26C4
|
|
public void PulseAll()
|
|
{
|
|
lock (this)
|
|
{
|
|
Monitor.PulseAll(this);
|
|
}
|
|
}
|
|
|
|
// Token: 0x040016EF RID: 5871
|
|
private ReaderWriterLock rwlock;
|
|
|
|
// Token: 0x040016F0 RID: 5872
|
|
private int lockCount;
|
|
}
|
|
}
|