diff options
author | Ben Adams <thundercat@illyriad.co.uk> | 2016-08-10 01:10:43 +0100 |
---|---|---|
committer | Ben Adams <thundercat@illyriad.co.uk> | 2016-08-10 01:10:43 +0100 |
commit | a0597dae2368fecea16c21f2d9f255476c330818 (patch) | |
tree | 30bdf1332eed81935e8466c48c1cd3e7dbffbe61 /src | |
parent | 519dcde5a6c4fe999e08219e7edd7c9f90e6c96e (diff) | |
download | coreclr-a0597dae2368fecea16c21f2d9f255476c330818.tar.gz coreclr-a0597dae2368fecea16c21f2d9f255476c330818.tar.bz2 coreclr-a0597dae2368fecea16c21f2d9f255476c330818.zip |
Fix MemoryBarrier
Diffstat (limited to 'src')
-rw-r--r-- | src/vm/win32threadpool.cpp | 6 | ||||
-rw-r--r-- | src/vm/win32threadpool.h | 6 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/vm/win32threadpool.cpp b/src/vm/win32threadpool.cpp index 2ec7deded4..23ed911611 100644 --- a/src/vm/win32threadpool.cpp +++ b/src/vm/win32threadpool.cpp @@ -1263,10 +1263,10 @@ void ThreadpoolMgr::AdjustMaxWorkersActive() } PriorCompletedWorkRequests = totalNumCompletions; - PriorCompletedWorkRequestsTime = currentTicks; NextCompletedWorkRequestsTime = currentTicks + ThreadAdjustmentInterval; - CurrentSampleStartTime = endTime; - MemoryBarrier(); + MemoryBarrier(); // flush previous writes (especially NextCompletedWorkRequestsTime) + PriorCompletedWorkRequestsTime = currentTicks; + CurrentSampleStartTime = endTime;; } } diff --git a/src/vm/win32threadpool.h b/src/vm/win32threadpool.h index 50eb708c39..45880d0b0f 100644 --- a/src/vm/win32threadpool.h +++ b/src/vm/win32threadpool.h @@ -1142,9 +1142,9 @@ public: if (CLRThreadpoolHosted()) return false; - MemoryBarrier(); - DWORD priorTime = PriorCompletedWorkRequestsTime; - DWORD requiredInterval = NextCompletedWorkRequestsTime - priorTime; // fences above read + DWORD priorTime = PriorCompletedWorkRequestsTime; + MemoryBarrier(); // read fresh value for NextCompletedWorkRequestsTime below + DWORD requiredInterval = NextCompletedWorkRequestsTime - priorTime; DWORD elapsedInterval = GetTickCount() - priorTime; if (elapsedInterval >= requiredInterval) { |