Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / Util / ReadWriteObjectLock.cs / 1 / 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SendActivityEventArgs.cs
- SizeAnimationBase.cs
- OdbcConnectionString.cs
- DirectoryObjectSecurity.cs
- CellRelation.cs
- TypeListConverter.cs
- DataTableMapping.cs
- _SafeNetHandles.cs
- GacUtil.cs
- PathSegment.cs
- HtmlTernaryTree.cs
- Encoder.cs
- StateManagedCollection.cs
- SymbolEqualComparer.cs
- CompositeDesignerAccessibleObject.cs
- LinqDataSource.cs
- ListViewDesigner.cs
- XmlNullResolver.cs
- ScrollableControlDesigner.cs
- PartialArray.cs
- ThreadStateException.cs
- EdmError.cs
- ErasingStroke.cs
- SID.cs
- WinInet.cs
- XmlSchemaInfo.cs
- XmlSchemaValidationException.cs
- Wildcard.cs
- RelationshipEndMember.cs
- JsonXmlDataContract.cs
- ErrorLog.cs
- Point4D.cs
- RuntimeConfigurationRecord.cs
- ModuleElement.cs
- cookie.cs
- ParallelTimeline.cs
- backend.cs
- TextParagraph.cs
- GridViewRowPresenter.cs
- LocatorBase.cs
- FileRecordSequenceCompletedAsyncResult.cs
- InputBindingCollection.cs
- ImpersonationContext.cs
- sqlstateclientmanager.cs
- OutputCacheSettingsSection.cs
- RouteParameter.cs
- SoapAttributes.cs
- GlobalAllocSafeHandle.cs
- RedirectionProxy.cs
- BrowserCapabilitiesCompiler.cs
- RequestQueryProcessor.cs
- AnimationClockResource.cs
- SecurityElement.cs
- CompilationSection.cs
- CodeArrayIndexerExpression.cs
- ThreadStaticAttribute.cs
- MetabaseServerConfig.cs
- XamlRtfConverter.cs
- BitArray.cs
- FileSystemEventArgs.cs
- PermissionSetTriple.cs
- VirtualPathUtility.cs
- ObjectDataSourceDisposingEventArgs.cs
- CodeThrowExceptionStatement.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- ConfigurationException.cs
- FormViewPagerRow.cs
- WindowsScrollBarBits.cs
- ModelProperty.cs
- EntityContainerAssociationSetEnd.cs
- ViewCellSlot.cs
- CommandExpr.cs
- Delegate.cs
- ArgumentNullException.cs
- ExpandCollapsePattern.cs
- FormViewModeEventArgs.cs
- rsa.cs
- DesignerAutoFormatCollection.cs
- UnsafeNativeMethods.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- TypedReference.cs
- ToolStripDropTargetManager.cs
- CrossContextChannel.cs
- WebProxyScriptElement.cs
- RawStylusActions.cs
- dbenumerator.cs
- ProtocolElement.cs
- ValidatedControlConverter.cs
- DateTimeParse.cs
- EntityTypeBase.cs
- StrokeNodeOperations.cs
- ImpersonateTokenRef.cs
- GradientStopCollection.cs
- ToolStripSettings.cs
- _TimerThread.cs
- SelectionWordBreaker.cs
- TypeDependencyAttribute.cs
- CompilerHelpers.cs
- RequestCache.cs
- XmlCompatibilityReader.cs