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
- SByteStorage.cs
- VirtualPathUtility.cs
- arabicshape.cs
- UpdateTracker.cs
- WindowsGrip.cs
- PromptBuilder.cs
- GlobalProxySelection.cs
- Message.cs
- IOThreadScheduler.cs
- EventLog.cs
- TabRenderer.cs
- SizeAnimationClockResource.cs
- ZeroOpNode.cs
- SessionSwitchEventArgs.cs
- Int16Storage.cs
- SecurityContextSecurityTokenParameters.cs
- ErrorRuntimeConfig.cs
- ColorTransform.cs
- FunctionDetailsReader.cs
- Compress.cs
- RangeValidator.cs
- EndpointDiscoveryMetadataCD1.cs
- DoubleAnimationUsingPath.cs
- RawStylusActions.cs
- InvokePatternIdentifiers.cs
- SystemWebCachingSectionGroup.cs
- Overlapped.cs
- ObjectDataSourceView.cs
- SystemIPInterfaceProperties.cs
- DataGridComponentEditor.cs
- OperationSelectorBehavior.cs
- Parser.cs
- NamedObject.cs
- EmptyEnumerator.cs
- CollectionAdapters.cs
- IOException.cs
- FormsAuthenticationUserCollection.cs
- DefaultTypeArgumentAttribute.cs
- WeakReferenceEnumerator.cs
- EnumUnknown.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- CryptoConfig.cs
- SEHException.cs
- DataKey.cs
- DeclarationUpdate.cs
- OdbcTransaction.cs
- Route.cs
- ContextInformation.cs
- CompositeFontFamily.cs
- NotImplementedException.cs
- _ProxyChain.cs
- DataColumnCollection.cs
- MessageQueuePermissionAttribute.cs
- SystemTcpConnection.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- StringCollectionMarkupSerializer.cs
- EventDescriptor.cs
- WebPartConnectionsCancelVerb.cs
- InstanceDataCollection.cs
- PrintPageEvent.cs
- PropertyToken.cs
- GenericUriParser.cs
- URI.cs
- TrackBarRenderer.cs
- BaseCodePageEncoding.cs
- ListItemsCollectionEditor.cs
- ParseHttpDate.cs
- SelectionListDesigner.cs
- BuilderPropertyEntry.cs
- RectConverter.cs
- MenuBindingsEditor.cs
- BulletChrome.cs
- ScrollProviderWrapper.cs
- TextParaLineResult.cs
- CheckBoxAutomationPeer.cs
- Types.cs
- LineMetrics.cs
- LongTypeConverter.cs
- XamlTypeMapper.cs
- WorkflowMarkupSerializationProvider.cs
- SqlTypesSchemaImporter.cs
- XamlTreeBuilder.cs
- WorkflowItemsPresenter.cs
- RelationshipConverter.cs
- UnsafePeerToPeerMethods.cs
- XmlUrlResolver.cs
- BuildProvider.cs
- StreamWriter.cs
- DirtyTextRange.cs
- EmitterCache.cs
- Timeline.cs
- WebContext.cs
- ToolStripInSituService.cs
- WindowsFormsSynchronizationContext.cs
- XmlSchemaSimpleContent.cs
- NamespaceCollection.cs
- TextRunCacheImp.cs
- JsonWriterDelegator.cs
- MessageEncoderFactory.cs
- ToolTipService.cs