Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Util / ReadWriteObjectLock.cs / 1305376 / ReadWriteObjectLock.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* * ReadWriteObjectLock * * Copyright (c) 1998-1999, Microsoft Corporation * */ namespace System.Web.Util { using System.Runtime.Serialization.Formatters; using System.Threading; class ReadWriteObjectLock { // Assumption: // -1 = a writer has the lock // 0 = no one has the lock // >0 = number of readers using the lock private int _lock; internal ReadWriteObjectLock() { } internal virtual void AcquireRead() { lock(this) { while (_lock == -1) { try { Monitor.Wait(this); } catch (ThreadInterruptedException) { // Just keep looping } } _lock++; } } internal virtual void ReleaseRead() { lock(this) { Debug.Assert(_lock > 0); _lock--; if (_lock == 0) { Monitor.PulseAll(this); } } } internal virtual void AcquireWrite() { lock(this) { while (_lock != 0) { try { Monitor.Wait(this); } catch (ThreadInterruptedException) { // Just keep looping } } _lock = -1; } } internal virtual void ReleaseWrite() { lock(this) { Debug.Assert(_lock == -1); _lock = 0; Monitor.PulseAll(this); } } /* internal virtual void AssertReadLock() { #if DBG Debug.Assert(_lock > 0); #endif } internal virtual void AssertWriteLock() { #if DBG Debug.Assert(_lock == -1); #endif } */ } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SqlMethodTransformer.cs
- RenderDataDrawingContext.cs
- TextOnlyOutput.cs
- XmlConvert.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- TransportSecurityProtocol.cs
- WindowsSolidBrush.cs
- MouseOverProperty.cs
- FrameworkObject.cs
- PropertyManager.cs
- AppDomainManager.cs
- VScrollProperties.cs
- StyleBamlTreeBuilder.cs
- ApplicationId.cs
- Stack.cs
- PointLightBase.cs
- Base64Encoder.cs
- HandlerBase.cs
- JournalEntry.cs
- EntityClassGenerator.cs
- RSACryptoServiceProvider.cs
- CodeGenerator.cs
- ListChunk.cs
- ImageListUtils.cs
- IgnoreSectionHandler.cs
- ConnectionManagementElement.cs
- WeakHashtable.cs
- Privilege.cs
- WebSysDisplayNameAttribute.cs
- TextModifier.cs
- LoaderAllocator.cs
- StandardToolWindows.cs
- BaseDataBoundControl.cs
- Merger.cs
- ChtmlFormAdapter.cs
- FatalException.cs
- HtmlHead.cs
- NativeActivityTransactionContext.cs
- ColorConverter.cs
- NativeMethods.cs
- FixedLineResult.cs
- HttpEncoderUtility.cs
- ControlPropertyNameConverter.cs
- Vector3DAnimation.cs
- OSFeature.cs
- SessionStateModule.cs
- PointAnimationUsingKeyFrames.cs
- ListChunk.cs
- HttpRequestCacheValidator.cs
- StylusPointCollection.cs
- TextWriterEngine.cs
- TextTreeTextElementNode.cs
- SpellerError.cs
- ProtocolProfile.cs
- DbMetaDataColumnNames.cs
- safex509handles.cs
- EdmEntityTypeAttribute.cs
- StringUtil.cs
- PageAsyncTask.cs
- InternalConfigSettingsFactory.cs
- XmlArrayItemAttributes.cs
- AlgoModule.cs
- NamespaceEmitter.cs
- ClientUIRequest.cs
- StatusBarItemAutomationPeer.cs
- XmlSchemaInclude.cs
- XmlNavigatorStack.cs
- DataGridViewColumnEventArgs.cs
- ParameterReplacerVisitor.cs
- Hyperlink.cs
- UnmanagedBitmapWrapper.cs
- HandledMouseEvent.cs
- OrthographicCamera.cs
- SettingsBase.cs
- Attachment.cs
- PropertiesTab.cs
- Membership.cs
- UICuesEvent.cs
- InternalPermissions.cs
- UrlRoutingHandler.cs
- LabelLiteral.cs
- RewritingSimplifier.cs
- DateTimeValueSerializerContext.cs
- WindowAutomationPeer.cs
- TextServicesDisplayAttribute.cs
- FontUnit.cs
- ValidationException.cs
- HttpCookiesSection.cs
- RadioButton.cs
- ItemContainerProviderWrapper.cs
- DecoderExceptionFallback.cs
- XmlText.cs
- FixedSOMTable.cs
- ScalarConstant.cs
- AuthenticatingEventArgs.cs
- ELinqQueryState.cs
- DesignerLoader.cs
- ClientRuntimeConfig.cs
- AdRotator.cs
- SqlMultiplexer.cs