1 /* ****************************************************************************
\r
3 * Copyright (c) Microsoft Corporation. All rights reserved.
\r
5 * This software is subject to the Microsoft Public License (Ms-PL).
\r
6 * A copy of the license can be found in the license.htm file included
\r
7 * in this distribution.
\r
9 * You must not remove this notice, or any other, from this software.
\r
11 * ***************************************************************************/
\r
13 namespace System.Web.Mvc.Async {
\r
15 using System.Threading;
\r
17 // used to synchronize access to a single-use consumable resource
\r
18 internal sealed class SingleEntryGate {
\r
20 private const int NOT_ENTERED = 0;
\r
21 private const int ENTERED = 1;
\r
23 private int _status;
\r
25 // returns true if this is the first call to TryEnter(), false otherwise
\r
26 public bool TryEnter() {
\r
27 int oldStatus = Interlocked.Exchange(ref _status, ENTERED);
\r
28 return (oldStatus == NOT_ENTERED);
\r