From: Koundinya Veluri Date: Fri, 15 Mar 2019 16:12:27 +0000 (-0700) Subject: In CLRLifoSemaphore, start the underlying semaphore with 0 for the initial signal... X-Git-Tag: submit/tizen/20210909.063632~11030^2~2163 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b1284352a118e7271024f190d2830a769d61ff69;p=platform%2Fupstream%2Fdotnet%2Fruntime.git In CLRLifoSemaphore, start the underlying semaphore with 0 for the initial signal count (dotnet/coreclr#22632) - Port of a fix from https://github.com/dotnet/corert/pull/6955 - The underlying semaphore is only used to wake up waiters, initially there are no waiters and the signal count should be zero. This was already the case on Windows, this fixes the Unix side. The actual initial signal count is tracked in the upper layer counts. - The initial signal count passed in is zero anyway in the places where it's used, so it makes no difference for now, just some cleanup Commit migrated from https://github.com/dotnet/coreclr/commit/9c4d496071c2ffdc5a8793835694d1a8ac267522 --- diff --git a/src/coreclr/src/vm/synch.cpp b/src/coreclr/src/vm/synch.cpp index 13f6ff3..55d42d7 100644 --- a/src/coreclr/src/vm/synch.cpp +++ b/src/coreclr/src/vm/synch.cpp @@ -589,7 +589,7 @@ void CLRLifoSemaphore::Create(INT32 initialSignalCount, INT32 maximumSignalCount _ASSERTE(m_handle == nullptr); #ifdef FEATURE_PAL - HANDLE h = UnsafeCreateSemaphore(nullptr, initialSignalCount, maximumSignalCount, nullptr); + HANDLE h = UnsafeCreateSemaphore(nullptr, 0, maximumSignalCount, nullptr); #else // !FEATURE_PAL HANDLE h = CreateIoCompletionPort(INVALID_HANDLE_VALUE, nullptr, 0, maximumSignalCount); #endif // FEATURE_PAL