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
- MultiTargetingUtil.cs
- VerificationAttribute.cs
- SelectingProviderEventArgs.cs
- XmlDataProvider.cs
- BinHexDecoder.cs
- CompositionAdorner.cs
- RenameRuleObjectDialog.cs
- XmlChildNodes.cs
- HttpException.cs
- SelectorItemAutomationPeer.cs
- ItemsControl.cs
- TextElementEnumerator.cs
- TimeSpanConverter.cs
- XmlLanguageConverter.cs
- ToolboxComponentsCreatingEventArgs.cs
- TextBoxBase.cs
- bidPrivateBase.cs
- RawTextInputReport.cs
- WebPartEventArgs.cs
- BCLDebug.cs
- DataControlImageButton.cs
- SamlConditions.cs
- PenLineJoinValidation.cs
- HtmlCommandAdapter.cs
- ArraySortHelper.cs
- BrowserCapabilitiesCompiler.cs
- Control.cs
- ByteStreamGeometryContext.cs
- JsonEncodingStreamWrapper.cs
- ReferencedAssembly.cs
- MexHttpsBindingElement.cs
- HtmlImage.cs
- log.cs
- SHA512Cng.cs
- HighlightVisual.cs
- Itemizer.cs
- ContentElement.cs
- TdsParserStateObject.cs
- AlphaSortedEnumConverter.cs
- TextServicesCompartmentContext.cs
- XmlSignificantWhitespace.cs
- ConnectionPoolManager.cs
- Propagator.cs
- MouseGestureValueSerializer.cs
- ColorAnimationBase.cs
- DeploymentSectionCache.cs
- CorrelationResolver.cs
- RecordsAffectedEventArgs.cs
- IdentityReference.cs
- DocumentApplicationJournalEntry.cs
- ObjectListComponentEditor.cs
- XmlCodeExporter.cs
- DataRowIndexBuffer.cs
- ListSourceHelper.cs
- VideoDrawing.cs
- PageClientProxyGenerator.cs
- SQlBooleanStorage.cs
- ExpressionVisitorHelpers.cs
- DefaultHttpHandler.cs
- GatewayDefinition.cs
- Double.cs
- KeyNotFoundException.cs
- PathSegment.cs
- SafeNativeMethods.cs
- InputBindingCollection.cs
- WindowCollection.cs
- InvokePatternIdentifiers.cs
- HtmlTable.cs
- XmlSchemaGroup.cs
- SystemIPAddressInformation.cs
- CodeRegionDirective.cs
- ImageMapEventArgs.cs
- SplineQuaternionKeyFrame.cs
- HttpCachePolicy.cs
- BlockCollection.cs
- ResourceContainer.cs
- RotateTransform3D.cs
- ResourceWriter.cs
- FileAuthorizationModule.cs
- FontStretchConverter.cs
- ObjectViewEntityCollectionData.cs
- SafeLocalAllocation.cs
- DataExpression.cs
- CapabilitiesSection.cs
- NameService.cs
- NameHandler.cs
- GacUtil.cs
- FigureHelper.cs
- Rotation3DKeyFrameCollection.cs
- PagerSettings.cs
- EncoderNLS.cs
- ScrollChrome.cs
- BaseParagraph.cs
- CacheDependency.cs
- DataSourceConverter.cs
- MultipleViewPattern.cs
- SortExpressionBuilder.cs
- SoapHeaderException.cs
- JsonFormatReaderGenerator.cs
- BypassElementCollection.cs