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
- ConstructorArgumentAttribute.cs
- InternalBufferOverflowException.cs
- XmlSchemaValidationException.cs
- StylusSystemGestureEventArgs.cs
- ClientSession.cs
- XPathNodeInfoAtom.cs
- WebPartUtil.cs
- Icon.cs
- CodeEntryPointMethod.cs
- Int16KeyFrameCollection.cs
- CorruptStoreException.cs
- clipboard.cs
- TcpServerChannel.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- PackUriHelper.cs
- bindurihelper.cs
- OdbcConnectionHandle.cs
- NonSerializedAttribute.cs
- ComponentCommands.cs
- Lease.cs
- FontDialog.cs
- ProviderSettings.cs
- DrawListViewItemEventArgs.cs
- LambdaValue.cs
- BasicHttpBindingCollectionElement.cs
- CodeIndexerExpression.cs
- SystemInfo.cs
- DbProviderServices.cs
- SoapMessage.cs
- SplashScreenNativeMethods.cs
- LinqDataSource.cs
- HandleRef.cs
- OleDbRowUpdatedEvent.cs
- SymbolTable.cs
- MDIControlStrip.cs
- ValidateNames.cs
- SmiTypedGetterSetter.cs
- ServicePointManager.cs
- IgnoreFileBuildProvider.cs
- Matrix.cs
- CryptoConfig.cs
- ScriptManager.cs
- CustomExpression.cs
- RevocationPoint.cs
- ExtensionsSection.cs
- CellTreeSimplifier.cs
- DesignerLabelAdapter.cs
- MeshGeometry3D.cs
- DataControlFieldHeaderCell.cs
- PerformanceCounter.cs
- ListBindableAttribute.cs
- WindowsSecurityToken.cs
- TreeNodeBindingCollection.cs
- JapaneseLunisolarCalendar.cs
- SiteMapNodeItem.cs
- Control.cs
- Listbox.cs
- FontNameConverter.cs
- ThemeableAttribute.cs
- CodeArrayCreateExpression.cs
- MetadataCache.cs
- SvcMapFile.cs
- TriggerAction.cs
- ToolStripGripRenderEventArgs.cs
- WSSecureConversationDec2005.cs
- GenericPrincipal.cs
- LazyTextWriterCreator.cs
- EdgeModeValidation.cs
- NgenServicingAttributes.cs
- ProvidersHelper.cs
- storepermissionattribute.cs
- DataGridViewRowHeaderCell.cs
- HtmlElementEventArgs.cs
- InfoCardTrace.cs
- OdbcPermission.cs
- ProtocolsSection.cs
- Opcode.cs
- WindowsTab.cs
- Grid.cs
- DataSourceSelectArguments.cs
- WebBrowsableAttribute.cs
- LayoutExceptionEventArgs.cs
- NumberFormatInfo.cs
- DesignerTransaction.cs
- GPRECTF.cs
- ExpandSegment.cs
- AppDomainInstanceProvider.cs
- DispatcherSynchronizationContext.cs
- SystemNetHelpers.cs
- TextBox.cs
- EntityTemplateFactory.cs
- Pointer.cs
- DBSqlParserColumnCollection.cs
- HGlobalSafeHandle.cs
- Condition.cs
- XmlReflectionImporter.cs
- InfocardExtendedInformationCollection.cs
- CalendarAutoFormat.cs
- TextStore.cs
- SmiEventSink_DeferedProcessing.cs