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
- TemplateBindingExtensionConverter.cs
- GC.cs
- MetadataUtilsSmi.cs
- ProviderConnectionPoint.cs
- EntitySetDataBindingList.cs
- FileDialog.cs
- CancellationState.cs
- Label.cs
- TemplateControl.cs
- DesignerAutoFormatCollection.cs
- FontEmbeddingManager.cs
- TableColumn.cs
- BaseAutoFormat.cs
- SessionParameter.cs
- DiscoveryDocumentLinksPattern.cs
- WorkflowPageSetupDialog.cs
- DataColumnCollection.cs
- ItemsControl.cs
- DispatcherExceptionFilterEventArgs.cs
- PropagatorResult.cs
- CompressionTransform.cs
- WindowClosedEventArgs.cs
- QuaternionValueSerializer.cs
- MasterPageBuildProvider.cs
- OdbcReferenceCollection.cs
- Point4D.cs
- WebPartChrome.cs
- NameObjectCollectionBase.cs
- TemplateContent.cs
- ExceptionValidationRule.cs
- UndoUnit.cs
- RewritingProcessor.cs
- TailCallAnalyzer.cs
- DataGridViewAdvancedBorderStyle.cs
- ByteStack.cs
- ExpandSegmentCollection.cs
- MultipleViewProviderWrapper.cs
- BuildDependencySet.cs
- XmlBinaryReader.cs
- XmlNamespaceDeclarationsAttribute.cs
- PersonalizationStateInfo.cs
- ComponentSerializationService.cs
- SoapHeaders.cs
- IdentitySection.cs
- PassportAuthentication.cs
- SyndicationDeserializer.cs
- UnsafeNativeMethods.cs
- UnorderedHashRepartitionStream.cs
- HttpWrapper.cs
- NumberFormatInfo.cs
- ToggleButton.cs
- HttpCacheVary.cs
- SqlMetaData.cs
- CodeCompileUnit.cs
- Helpers.cs
- DurationConverter.cs
- EntitySqlQueryBuilder.cs
- COM2ColorConverter.cs
- ObjectRef.cs
- TypeDependencyAttribute.cs
- SchemaSetCompiler.cs
- BinHexDecoder.cs
- Root.cs
- TextParentUndoUnit.cs
- DataControlFieldCell.cs
- CaseStatementSlot.cs
- CollectionBuilder.cs
- MD5CryptoServiceProvider.cs
- Registry.cs
- VisualCollection.cs
- WebUtil.cs
- MarkupObject.cs
- CodeAttributeDeclarationCollection.cs
- DtrList.cs
- DataObjectAttribute.cs
- Button.cs
- XhtmlTextWriter.cs
- HtmlTableCell.cs
- Cloud.cs
- ParentQuery.cs
- Brush.cs
- TraceLog.cs
- CheckPair.cs
- HostingPreferredMapPath.cs
- SessionParameter.cs
- AsyncInvokeOperation.cs
- PageMediaSize.cs
- Typeface.cs
- Propagator.Evaluator.cs
- COM2PropertyPageUITypeConverter.cs
- Vector3D.cs
- XPathBinder.cs
- ThreadStaticAttribute.cs
- WorkflowFileItem.cs
- CustomLineCap.cs
- SecureStringHasher.cs
- CancellableEnumerable.cs
- ExpressionBinding.cs
- ObjectStateFormatter.cs
- DesignerImageAdapter.cs