Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Util / SafeBitVector32.cs / 1305376 / SafeBitVector32.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.Threading; namespace System.Web.Util { // // This is a multithreadsafe version of System.Collections.Specialized.BitVector32. // [Serializable] internal struct SafeBitVector32 { private volatile int _data; internal SafeBitVector32(int data) { this._data = data; } internal bool this[int bit] { get { int data = _data; return (data & bit) == bit; } set { for (;;) { int oldData = _data; int newData; if (value) { newData = oldData | bit; } else { newData = oldData & ~bit; } #pragma warning disable 0420 int result = Interlocked.CompareExchange(ref _data, newData, oldData); #pragma warning restore 0420 if (result == oldData) { break; } } } } internal bool ChangeValue(int bit, bool value) { for (;;) { int oldData = _data; int newData; if (value) { newData = oldData | bit; } else { newData = oldData & ~bit; } if (oldData == newData) { return false; } #pragma warning disable 0420 int result = Interlocked.CompareExchange(ref _data, newData, oldData); #pragma warning restore 0420 if (result == oldData) { return true; } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.Threading; namespace System.Web.Util { // // This is a multithreadsafe version of System.Collections.Specialized.BitVector32. // [Serializable] internal struct SafeBitVector32 { private volatile int _data; internal SafeBitVector32(int data) { this._data = data; } internal bool this[int bit] { get { int data = _data; return (data & bit) == bit; } set { for (;;) { int oldData = _data; int newData; if (value) { newData = oldData | bit; } else { newData = oldData & ~bit; } #pragma warning disable 0420 int result = Interlocked.CompareExchange(ref _data, newData, oldData); #pragma warning restore 0420 if (result == oldData) { break; } } } } internal bool ChangeValue(int bit, bool value) { for (;;) { int oldData = _data; int newData; if (value) { newData = oldData | bit; } else { newData = oldData & ~bit; } if (oldData == newData) { return false; } #pragma warning disable 0420 int result = Interlocked.CompareExchange(ref _data, newData, oldData); #pragma warning restore 0420 if (result == oldData) { return true; } } } } } // 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
- sqlstateclientmanager.cs
- WebPartMinimizeVerb.cs
- InputMethod.cs
- SectionInput.cs
- JavaScriptString.cs
- AmbientValueAttribute.cs
- DtdParser.cs
- CompositeFontParser.cs
- ParentUndoUnit.cs
- AssociationType.cs
- localization.cs
- SafeIUnknown.cs
- InternalConfigConfigurationFactory.cs
- FontWeight.cs
- GetFileNameResult.cs
- LocatorPart.cs
- Label.cs
- PointF.cs
- PropertyMappingExceptionEventArgs.cs
- SectionVisual.cs
- DbSetClause.cs
- Msec.cs
- NeutralResourcesLanguageAttribute.cs
- GridView.cs
- AspNetHostingPermission.cs
- ArraySortHelper.cs
- SqlMethods.cs
- BuildManager.cs
- Span.cs
- SiteMembershipCondition.cs
- WebZone.cs
- PartialCachingAttribute.cs
- UnsignedPublishLicense.cs
- SqlExpander.cs
- BamlLocalizableResourceKey.cs
- SchemaNamespaceManager.cs
- Run.cs
- DynamicILGenerator.cs
- ResourceReferenceExpressionConverter.cs
- AccessibleObject.cs
- SubqueryTrackingVisitor.cs
- LinqDataSourceValidationException.cs
- FormsAuthenticationUserCollection.cs
- BorderGapMaskConverter.cs
- DbConnectionPoolOptions.cs
- ZipIOZip64EndOfCentralDirectoryBlock.cs
- AssemblyBuilderData.cs
- InfiniteIntConverter.cs
- DESCryptoServiceProvider.cs
- FormsAuthenticationEventArgs.cs
- PipeSecurity.cs
- XmlSchemaResource.cs
- DataPointer.cs
- NativeObjectSecurity.cs
- DragEvent.cs
- EmptyStringExpandableObjectConverter.cs
- ContextQuery.cs
- ViewGenerator.cs
- TraceData.cs
- SourceElementsCollection.cs
- DrawingAttributesDefaultValueFactory.cs
- IssuedSecurityTokenProvider.cs
- Rules.cs
- SerialReceived.cs
- ToolStripComboBox.cs
- MetabaseServerConfig.cs
- RelationshipConverter.cs
- CurrentTimeZone.cs
- XmlNamespaceMappingCollection.cs
- BinaryCommonClasses.cs
- TraceContextRecord.cs
- DefaultHttpHandler.cs
- Tracking.cs
- compensatingcollection.cs
- PersistenceTypeAttribute.cs
- BitmapEffect.cs
- TypeSystemProvider.cs
- RightsManagementUser.cs
- CodeMethodReturnStatement.cs
- ComplexType.cs
- PersonalizationProviderHelper.cs
- mda.cs
- EncoderBestFitFallback.cs
- dataprotectionpermission.cs
- AttributeSetAction.cs
- FontFamilyValueSerializer.cs
- Tokenizer.cs
- CompositeTypefaceMetrics.cs
- IPGlobalProperties.cs
- ExtensionQuery.cs
- VideoDrawing.cs
- EmptyReadOnlyDictionaryInternal.cs
- FunctionMappingTranslator.cs
- PublisherIdentityPermission.cs
- WindowsIdentity.cs
- Rectangle.cs
- DPAPIProtectedConfigurationProvider.cs
- UnsafeNativeMethods.cs
- ErrorWrapper.cs
- DrawToolTipEventArgs.cs