Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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. // //----------------------------------------------------------------------------- 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UnsafeNativeMethods.cs
- NotificationContext.cs
- SQLDateTimeStorage.cs
- XamlVector3DCollectionSerializer.cs
- LayoutEngine.cs
- DataControlCommands.cs
- DesignerDataTableBase.cs
- XmlComplianceUtil.cs
- OutOfProcStateClientManager.cs
- AssemblyResourceLoader.cs
- CommandSet.cs
- ComponentChangingEvent.cs
- TimeoutTimer.cs
- DateTimeFormatInfoScanner.cs
- DTCTransactionManager.cs
- LineMetrics.cs
- IconConverter.cs
- RichTextBox.cs
- ServiceCredentials.cs
- MetaColumn.cs
- HwndPanningFeedback.cs
- RawMouseInputReport.cs
- XpsFilter.cs
- DetectRunnableInstancesTask.cs
- TaskExtensions.cs
- SqlRewriteScalarSubqueries.cs
- _SSPISessionCache.cs
- DesignRelationCollection.cs
- AmbientLight.cs
- TcpConnectionPoolSettingsElement.cs
- CapabilitiesAssignment.cs
- PinnedBufferMemoryStream.cs
- DefaultProxySection.cs
- PhysicalFontFamily.cs
- DefaultPropertiesToSend.cs
- DiagnosticsConfiguration.cs
- SecurityImpersonationBehavior.cs
- GradientStopCollection.cs
- SkewTransform.cs
- BoolExpr.cs
- CompilationLock.cs
- typedescriptorpermissionattribute.cs
- DriveNotFoundException.cs
- XmlLangPropertyAttribute.cs
- SmiGettersStream.cs
- AnnotationAuthorChangedEventArgs.cs
- Mapping.cs
- SessionPageStateSection.cs
- AnnotationDocumentPaginator.cs
- LabelLiteral.cs
- UInt64Converter.cs
- ToolboxItemLoader.cs
- TemplateXamlTreeBuilder.cs
- MetadataPropertyAttribute.cs
- DataGridCellInfo.cs
- DataGridViewCellLinkedList.cs
- CharConverter.cs
- ReachSerializableProperties.cs
- PropertyMap.cs
- OleServicesContext.cs
- RepeatBehaviorConverter.cs
- RunClient.cs
- RadioButtonRenderer.cs
- DataGridViewLinkColumn.cs
- ItemsPanelTemplate.cs
- RouteItem.cs
- Quaternion.cs
- DataChangedEventManager.cs
- TypeUsageBuilder.cs
- contentDescriptor.cs
- XmlSignatureProperties.cs
- assemblycache.cs
- QilTernary.cs
- WsdlInspector.cs
- CompModSwitches.cs
- IdnMapping.cs
- SQLDateTimeStorage.cs
- IItemProperties.cs
- TraceUtils.cs
- Inflater.cs
- WebFaultClientMessageInspector.cs
- CachedTypeface.cs
- TcpProcessProtocolHandler.cs
- SingleAnimation.cs
- XPathItem.cs
- ObjectListFieldCollection.cs
- UnmanagedMemoryStreamWrapper.cs
- bidPrivateBase.cs
- WebPartConnectionsConfigureVerb.cs
- MinimizableAttributeTypeConverter.cs
- Propagator.cs
- IndicShape.cs
- ToolStripSplitStackLayout.cs
- WebControl.cs
- TargetParameterCountException.cs
- DataGridDetailsPresenter.cs
- TrustSection.cs
- MulticastOption.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- _DomainName.cs