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
- DockAndAnchorLayout.cs
- control.ime.cs
- MsmqTransportElement.cs
- PrintController.cs
- CssStyleCollection.cs
- TextPointer.cs
- XPathDocumentBuilder.cs
- RightNameExpirationInfoPair.cs
- sqlnorm.cs
- ComponentManagerBroker.cs
- DataShape.cs
- ViewKeyConstraint.cs
- WebRequestModuleElement.cs
- SQLMoney.cs
- DataGridState.cs
- WebPart.cs
- ConnectionOrientedTransportChannelListener.cs
- EntityDataSourceColumn.cs
- XomlSerializationHelpers.cs
- ProtocolsConfigurationHandler.cs
- SqlDuplicator.cs
- SingleAnimation.cs
- AccessedThroughPropertyAttribute.cs
- CompiledQueryCacheEntry.cs
- DllNotFoundException.cs
- sqlinternaltransaction.cs
- DataGridPagerStyle.cs
- InstanceStore.cs
- TypeContext.cs
- WindowPattern.cs
- CodeSnippetCompileUnit.cs
- SHA384Managed.cs
- GeometryGroup.cs
- Menu.cs
- ColorTransform.cs
- thaishape.cs
- FunctionNode.cs
- _IPv4Address.cs
- InstalledFontCollection.cs
- ModelMemberCollection.cs
- Converter.cs
- WasEndpointConfigContainer.cs
- MetadataFile.cs
- HttpInputStream.cs
- RangeBase.cs
- PriorityChain.cs
- DocumentGrid.cs
- sqlinternaltransaction.cs
- DocumentsTrace.cs
- GcHandle.cs
- CodeGen.cs
- StrokeCollectionDefaultValueFactory.cs
- WebPartEditorOkVerb.cs
- UnionCqlBlock.cs
- XmlWriter.cs
- Operators.cs
- RenderCapability.cs
- EntityDataSourceDesigner.cs
- FunctionNode.cs
- FixedTextBuilder.cs
- SspiWrapper.cs
- log.cs
- DESCryptoServiceProvider.cs
- InputMethodStateTypeInfo.cs
- EventProxy.cs
- IfAction.cs
- TransformerInfoCollection.cs
- TreeNode.cs
- ParagraphResult.cs
- TypefaceMap.cs
- CheckedPointers.cs
- _ConnectOverlappedAsyncResult.cs
- SimpleTypeResolver.cs
- MonikerHelper.cs
- WorkflowItemPresenter.cs
- DataGridViewCellParsingEventArgs.cs
- ApplicationServicesHostFactory.cs
- WpfGeneratedKnownTypes.cs
- XmlSchemaObjectTable.cs
- ParseElementCollection.cs
- _CacheStreams.cs
- TreeView.cs
- TypeBrowser.xaml.cs
- StringSource.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- XmlnsCompatibleWithAttribute.cs
- CorrelationValidator.cs
- EventLogRecord.cs
- _PooledStream.cs
- Font.cs
- QueuePathEditor.cs
- RightsManagementEncryptionTransform.cs
- TypeSource.cs
- CodeFieldReferenceExpression.cs
- GridViewDeletedEventArgs.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- ProvideValueServiceProvider.cs
- HwndHostAutomationPeer.cs
- ObjectNavigationPropertyMapping.cs
- PopOutPanel.cs