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
- MaskDescriptors.cs
- OdbcReferenceCollection.cs
- PreviewKeyDownEventArgs.cs
- X509Certificate2.cs
- InitializeCorrelation.cs
- RoutedEventConverter.cs
- Byte.cs
- LeftCellWrapper.cs
- BinaryUtilClasses.cs
- IPAddressCollection.cs
- XmlSerializer.cs
- mongolianshape.cs
- MetadataPropertyAttribute.cs
- TreeViewEvent.cs
- Monitor.cs
- VectorCollectionConverter.cs
- SetterBase.cs
- WindowsAltTab.cs
- ManipulationCompletedEventArgs.cs
- InfoCardServiceInstallComponent.cs
- ApplicationFileParser.cs
- Configuration.cs
- WebUtil.cs
- XmlCountingReader.cs
- RemoteHelper.cs
- MobileControl.cs
- ObjectContext.cs
- PropertyNames.cs
- ServiceNameCollection.cs
- GestureRecognizer.cs
- HttpServerVarsCollection.cs
- DocumentAutomationPeer.cs
- ListControl.cs
- ViewDesigner.cs
- QueueException.cs
- SessionStateModule.cs
- PeerContact.cs
- SmiConnection.cs
- WeakHashtable.cs
- TagNameToTypeMapper.cs
- xsdvalidator.cs
- ColorAnimationUsingKeyFrames.cs
- SqlDataSourceConnectionPanel.cs
- HMAC.cs
- Misc.cs
- MsmqInputMessagePool.cs
- CreateDataSourceDialog.cs
- _SafeNetHandles.cs
- GlyphRunDrawing.cs
- FastEncoder.cs
- TableDetailsRow.cs
- EmbeddedMailObject.cs
- PropertyGridEditorPart.cs
- DataSourceView.cs
- XmlSerializerFactory.cs
- XmlEventCache.cs
- MainMenu.cs
- SafeRightsManagementPubHandle.cs
- ManagedWndProcTracker.cs
- WrapPanel.cs
- XmlSchemaSimpleContentExtension.cs
- TraceRecord.cs
- FormViewDeleteEventArgs.cs
- LinkDesigner.cs
- ListViewDeleteEventArgs.cs
- MarkupProperty.cs
- HttpApplication.cs
- FixedTextContainer.cs
- NamespaceMapping.cs
- WsdlBuildProvider.cs
- TemplatedControlDesigner.cs
- ContextMenuStrip.cs
- DocumentPageTextView.cs
- ButtonField.cs
- ConfigXmlWhitespace.cs
- Highlights.cs
- FontEmbeddingManager.cs
- NativeMethods.cs
- DataTransferEventArgs.cs
- FindCriteria.cs
- CellQuery.cs
- RectangleConverter.cs
- CalendarItem.cs
- NotifyParentPropertyAttribute.cs
- ServiceReference.cs
- HttpListenerException.cs
- PackWebRequestFactory.cs
- ThreadSafeList.cs
- ArgumentNullException.cs
- Timer.cs
- FillBehavior.cs
- OSFeature.cs
- ScrollChrome.cs
- FigureParagraph.cs
- CFStream.cs
- CodeAttributeDeclaration.cs
- ContextConfiguration.cs
- TextTreeObjectNode.cs
- AVElementHelper.cs
- NativeCompoundFileAPIs.cs