Imported Upstream version 4.6.0.125

Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2016-08-03 10:59:49 +00:00
parent a569aebcfd
commit e79aa3c0ed
17047 changed files with 3137615 additions and 392334 deletions

View File

@@ -46,8 +46,6 @@ namespace System.Runtime.Remoting.Contexts
bool _bReEntrant;
int _flavor;
[NonSerialized]
bool _locked;
[NonSerialized]
int _lockCount;
@@ -90,32 +88,26 @@ namespace System.Runtime.Remoting.Contexts
{
get
{
return _locked;
return _lockCount > 0;
}
set
{
if (value)
{
_mutex.WaitOne ();
AcquireLock ();
lock (this)
{
_lockCount++;
if (_lockCount > 1)
ReleaseLock (); // Thread already had the lock
_ownerThread = Thread.CurrentThread;
}
}
else
{
lock (this)
{
while (_lockCount > 0 && _ownerThread == Thread.CurrentThread)
{
_lockCount--;
_mutex.ReleaseMutex ();
_ownerThread = null;
while (_lockCount > 0 && _ownerThread == Thread.CurrentThread) {
ReleaseLock ();
}
}
}
@@ -140,7 +132,9 @@ namespace System.Runtime.Remoting.Contexts
if (_lockCount > 0 && _ownerThread == Thread.CurrentThread) {
_lockCount--;
_mutex.ReleaseMutex ();
_ownerThread = null;
if (_lockCount == 0) {
_ownerThread = null;
}
}
}
}