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
- RoleServiceManager.cs
- SafeArrayTypeMismatchException.cs
- SendingRequestEventArgs.cs
- XmlSchemaCompilationSettings.cs
- TextEffect.cs
- FileNotFoundException.cs
- Vector3D.cs
- StorageEntitySetMapping.cs
- OleDbReferenceCollection.cs
- ModifiableIteratorCollection.cs
- DefaultBindingPropertyAttribute.cs
- KeyValueInternalCollection.cs
- OutOfProcStateClientManager.cs
- PropertyDescriptorGridEntry.cs
- RegexTypeEditor.cs
- Vertex.cs
- TextInfo.cs
- UrlRoutingModule.cs
- ToolboxCategory.cs
- _AutoWebProxyScriptHelper.cs
- TextCompositionEventArgs.cs
- HttpCookiesSection.cs
- ButtonFlatAdapter.cs
- DownloadProgressEventArgs.cs
- WebPartEventArgs.cs
- TerminatorSinks.cs
- Font.cs
- Accessors.cs
- PropertyHelper.cs
- WindowsScroll.cs
- MenuItem.cs
- XmlObjectSerializerWriteContextComplex.cs
- WindowCollection.cs
- CompareValidator.cs
- DataGridViewAddColumnDialog.cs
- AssemblyCache.cs
- ContextBase.cs
- GridViewCancelEditEventArgs.cs
- NativeMethods.cs
- Propagator.ExtentPlaceholderCreator.cs
- TextParagraphProperties.cs
- MetadataUtilsSmi.cs
- _IPv6Address.cs
- ProviderMetadataCachedInformation.cs
- WindowsSysHeader.cs
- CodeMethodReturnStatement.cs
- BamlLocalizationDictionary.cs
- CodeSnippetExpression.cs
- StoryFragments.cs
- ObjectIDGenerator.cs
- XmlSerializationWriter.cs
- ProtocolElement.cs
- HtmlElementCollection.cs
- XXXOnTypeBuilderInstantiation.cs
- SystemWebExtensionsSectionGroup.cs
- ResolvedKeyFrameEntry.cs
- PassportAuthenticationModule.cs
- XmlSchemaSimpleContentExtension.cs
- MetadataUtil.cs
- DynamicPhysicalDiscoSearcher.cs
- AuthenticationService.cs
- TreeWalkHelper.cs
- CoTaskMemHandle.cs
- FormatConvertedBitmap.cs
- SqlInternalConnectionTds.cs
- AssemblyEvidenceFactory.cs
- CanonicalXml.cs
- ValueCollectionParameterReader.cs
- ServiceChannel.cs
- OpenTypeLayoutCache.cs
- UserValidatedEventArgs.cs
- QilTernary.cs
- SoapProtocolReflector.cs
- _LocalDataStore.cs
- ArrayTypeMismatchException.cs
- Blend.cs
- ContextMarshalException.cs
- EventRouteFactory.cs
- SiteMapNode.cs
- SQLBytes.cs
- SiteMap.cs
- DiscoveryRequestHandler.cs
- MessageAction.cs
- HttpContextWrapper.cs
- ConfigurationSection.cs
- ConfigXmlReader.cs
- ArraySet.cs
- EmbeddedMailObjectsCollection.cs
- JsonDeserializer.cs
- ProgressChangedEventArgs.cs
- WindowsSpinner.cs
- QilCloneVisitor.cs
- Exceptions.cs
- XPathEmptyIterator.cs
- DefaultSerializationProviderAttribute.cs
- PersonalizablePropertyEntry.cs
- SpotLight.cs
- ParenthesizePropertyNameAttribute.cs
- BaseTemplateBuildProvider.cs
- SynchronizationContext.cs