Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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;
}
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DispatcherExceptionFilterEventArgs.cs
- DateTimeEditor.cs
- LookupBindingPropertiesAttribute.cs
- PropertyItemInternal.cs
- SoapClientProtocol.cs
- CodePropertyReferenceExpression.cs
- PagedControl.cs
- precedingsibling.cs
- DataGridViewRowHeaderCell.cs
- AttachedAnnotationChangedEventArgs.cs
- AutomationPatternInfo.cs
- CategoryNameCollection.cs
- XmlNavigatorStack.cs
- MouseGestureConverter.cs
- RightsManagementEncryptionTransform.cs
- CryptoHandle.cs
- DiscoveryClient.cs
- XmlCountingReader.cs
- SemanticResolver.cs
- PathFigureCollection.cs
- DataErrorValidationRule.cs
- XamlSerializationHelper.cs
- CTreeGenerator.cs
- CodeDOMUtility.cs
- DoubleLink.cs
- MarshalByRefObject.cs
- RelOps.cs
- VarRemapper.cs
- XmlCDATASection.cs
- RbTree.cs
- DisposableCollectionWrapper.cs
- XmlSerializerSection.cs
- Vector.cs
- Attributes.cs
- SystemParameters.cs
- MatrixTransform.cs
- ObjectResult.cs
- LayoutManager.cs
- SubMenuStyleCollectionEditor.cs
- ColorConvertedBitmap.cs
- ADConnectionHelper.cs
- EntityProviderFactory.cs
- NetworkAddressChange.cs
- QuestionEventArgs.cs
- DataGridTableStyleMappingNameEditor.cs
- _SslSessionsCache.cs
- RadioButtonBaseAdapter.cs
- CompositeControl.cs
- SingleTagSectionHandler.cs
- PropertyDescriptorCollection.cs
- SoapIgnoreAttribute.cs
- ParameterBuilder.cs
- log.cs
- XmlTextReaderImpl.cs
- MetadataUtilsSmi.cs
- ContextProperty.cs
- basevalidator.cs
- ComponentTray.cs
- CodeConstructor.cs
- DataGridAddNewRow.cs
- DispatchChannelSink.cs
- AuditLevel.cs
- InvalidateEvent.cs
- ChannelBuilder.cs
- RequestCachePolicyConverter.cs
- MouseEvent.cs
- NoResizeSelectionBorderGlyph.cs
- Facet.cs
- CrossContextChannel.cs
- CharEnumerator.cs
- QueryContinueDragEvent.cs
- PolicyUnit.cs
- AutomationProperties.cs
- CustomError.cs
- ComponentResourceKeyConverter.cs
- CustomErrorCollection.cs
- HttpContextServiceHost.cs
- DataGridViewTextBoxEditingControl.cs
- MessageSmuggler.cs
- SqlDependency.cs
- BindingManagerDataErrorEventArgs.cs
- RolePrincipal.cs
- XmlWrappingReader.cs
- SpellerHighlightLayer.cs
- OleDbError.cs
- EndpointDiscoveryMetadataCD1.cs
- RadioButtonStandardAdapter.cs
- DataBoundLiteralControl.cs
- SqlParameterCollection.cs
- RequestQueue.cs
- NamedObject.cs
- PageBuildProvider.cs
- EventsTab.cs
- BitmapEffectCollection.cs
- DesignerFrame.cs
- DocumentXPathNavigator.cs
- ListDataHelper.cs
- ReferenceService.cs
- DesignerView.xaml.cs
- BufferModesCollection.cs