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
- FixedSOMLineCollection.cs
- Button.cs
- SplitterEvent.cs
- RSACryptoServiceProvider.cs
- XmlNamespaceManager.cs
- remotingproxy.cs
- HttpProfileBase.cs
- SqlDataSourceQueryEditorForm.cs
- PartitionResolver.cs
- OLEDB_Util.cs
- AuthenticationException.cs
- EdmItemCollection.cs
- ResourceWriter.cs
- TracingConnectionInitiator.cs
- JournalEntry.cs
- RestClientProxyHandler.cs
- RawStylusInputCustomData.cs
- DescendentsWalkerBase.cs
- HtmlEmptyTagControlBuilder.cs
- CallbackException.cs
- TrackingMemoryStream.cs
- LockCookie.cs
- Documentation.cs
- DataService.cs
- NaturalLanguageHyphenator.cs
- SchemaCollectionPreprocessor.cs
- PerformanceCounter.cs
- ProtectedProviderSettings.cs
- DbConnectionPoolIdentity.cs
- DisableDpiAwarenessAttribute.cs
- TableCellsCollectionEditor.cs
- Atom10FormatterFactory.cs
- TransferRequestHandler.cs
- StrokeNodeOperations2.cs
- DesignerTransaction.cs
- DataBinding.cs
- GenerateTemporaryTargetAssembly.cs
- X509CertificateValidator.cs
- IdentifierService.cs
- ParameterBuilder.cs
- ViewGenResults.cs
- TempEnvironment.cs
- JsonXmlDataContract.cs
- DBCommandBuilder.cs
- TrackingDataItemValue.cs
- HMACRIPEMD160.cs
- OutputScopeManager.cs
- ConfigXmlSignificantWhitespace.cs
- TransformCollection.cs
- ForceCopyBuildProvider.cs
- FixedDocument.cs
- WebColorConverter.cs
- GroupBoxAutomationPeer.cs
- ClientRoleProvider.cs
- DependencyObject.cs
- _ProxyRegBlob.cs
- ArrayExtension.cs
- XmlILConstructAnalyzer.cs
- RandomNumberGenerator.cs
- RelatedImageListAttribute.cs
- CounterCreationData.cs
- GeometryHitTestParameters.cs
- SchemaMerger.cs
- WebPartMenuStyle.cs
- RegistryPermission.cs
- XmlBinaryWriterSession.cs
- Geometry3D.cs
- SqlDataRecord.cs
- SchemaNotation.cs
- AxHost.cs
- ReadOnlyKeyedCollection.cs
- OpenTypeLayout.cs
- DesignerLoader.cs
- CompilerGlobalScopeAttribute.cs
- ColorKeyFrameCollection.cs
- ObjectDataSourceMethodEventArgs.cs
- ServiceDescription.cs
- KeyboardDevice.cs
- AssemblyLoader.cs
- ListBox.cs
- DependencyProperty.cs
- ThreadInterruptedException.cs
- ExecutionScope.cs
- SecurityRuntime.cs
- Membership.cs
- ListViewDesigner.cs
- ProtocolsConfigurationHandler.cs
- CmsUtils.cs
- ReadOnlyCollectionBase.cs
- EdmItemError.cs
- ToolboxService.cs
- TypeForwardedToAttribute.cs
- ToolStripOverflow.cs
- SystemIcmpV6Statistics.cs
- SelectManyQueryOperator.cs
- StopRoutingHandler.cs
- RoutedEventValueSerializer.cs
- HandledEventArgs.cs
- XmlAttributeAttribute.cs
- TypeElementCollection.cs