Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / DEVDIV / depot / DevDiv / releases / whidbey / QFE / ndp / fx / src / xsp / System / Web / Util / SafeBitVector32.cs / 1 / 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; } #if UNUSED_CODE internal int IntegerValue { get { return _data; } set { #pragma warning disable 0420 Interlocked.Exchange(ref _data, value); #pragma warning restore 0420 } } #endif 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. //------------------------------------------------------------------------------ //// 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; } #if UNUSED_CODE internal int IntegerValue { get { return _data; } set { #pragma warning disable 0420 Interlocked.Exchange(ref _data, value); #pragma warning restore 0420 } } #endif 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- StatusBarPanelClickEvent.cs
- DispatcherHookEventArgs.cs
- Point3DConverter.cs
- SqlNotificationEventArgs.cs
- EventLogPermissionEntry.cs
- DataGridViewRowCollection.cs
- SecurityVersion.cs
- DesignerFrame.cs
- FocusChangedEventArgs.cs
- DesignerSerializationOptionsAttribute.cs
- RequestTimeoutManager.cs
- ConfigurationStrings.cs
- ExpandCollapseProviderWrapper.cs
- ReflectTypeDescriptionProvider.cs
- StyleTypedPropertyAttribute.cs
- ServiceOperationDetailViewControl.cs
- TransactionCache.cs
- PageCatalogPartDesigner.cs
- TextServicesProperty.cs
- ToolStripOverflow.cs
- DataServiceQuery.cs
- CallbackValidator.cs
- WindowsComboBox.cs
- DataServiceResponse.cs
- WebPartConnectionsDisconnectVerb.cs
- DataControlFieldCell.cs
- ToolStripItemEventArgs.cs
- SerializationException.cs
- ProfilePropertyNameValidator.cs
- PersonalizationStateQuery.cs
- SortKey.cs
- TableDetailsRow.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- TextElementCollectionHelper.cs
- CompositeActivityDesigner.cs
- EntityTypeEmitter.cs
- SerializerDescriptor.cs
- MenuAdapter.cs
- TextTreeInsertUndoUnit.cs
- BindingContext.cs
- HtmlTableCellCollection.cs
- CalendarDataBindingHandler.cs
- BrowserTree.cs
- InkPresenter.cs
- SystemResourceKey.cs
- XmlElementList.cs
- QueryCursorEventArgs.cs
- SafeSecurityHandles.cs
- RijndaelManaged.cs
- SqlNotificationRequest.cs
- LookupBindingPropertiesAttribute.cs
- SqlCrossApplyToCrossJoin.cs
- TextPointerBase.cs
- SoundPlayer.cs
- ComplexType.cs
- _ProxyChain.cs
- UntrustedRecipientException.cs
- BitmapSourceSafeMILHandle.cs
- OciHandle.cs
- XPathScanner.cs
- Literal.cs
- CatalogPartDesigner.cs
- ToolStripControlHost.cs
- DecimalAnimationUsingKeyFrames.cs
- BamlVersionHeader.cs
- Attributes.cs
- DesignBindingPropertyDescriptor.cs
- WebPartConnectionCollection.cs
- InputProcessorProfilesLoader.cs
- LocatorGroup.cs
- DataServiceCollectionOfT.cs
- FacetEnabledSchemaElement.cs
- LiteralControl.cs
- XmlQueryCardinality.cs
- _RegBlobWebProxyDataBuilder.cs
- XmlNodeList.cs
- ClosableStream.cs
- ListBindingConverter.cs
- WorkflowOperationErrorHandler.cs
- Char.cs
- MouseBinding.cs
- ProcessHostFactoryHelper.cs
- DescendentsWalkerBase.cs
- MorphHelper.cs
- SessionState.cs
- SqlCacheDependencyDatabaseCollection.cs
- QilReplaceVisitor.cs
- AttachedProperty.cs
- XmlSchemaDocumentation.cs
- BaseTemplateParser.cs
- documentation.cs
- HttpValueCollection.cs
- XmlSerializationReader.cs
- Utils.cs
- AtomServiceDocumentSerializer.cs
- References.cs
- XmlDownloadManager.cs
- MultitargetingHelpers.cs
- BooleanFunctions.cs
- RefreshPropertiesAttribute.cs