Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Util / SafeBitVector32.cs / 1305376 / 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;
}
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
- ExternalFile.cs
- SafeNativeMethods.cs
- MenuAutomationPeer.cs
- NetworkStream.cs
- EffectiveValueEntry.cs
- OdbcConnectionString.cs
- DataErrorValidationRule.cs
- ImageSource.cs
- XmlCustomFormatter.cs
- Rule.cs
- FixedTextView.cs
- RayMeshGeometry3DHitTestResult.cs
- DependencyPropertyDescriptor.cs
- SubqueryRules.cs
- WebPartConnectionsEventArgs.cs
- XamlReader.cs
- OfTypeExpression.cs
- MethodRental.cs
- Comparer.cs
- ArraySubsetEnumerator.cs
- DiagnosticSection.cs
- DataGridViewCell.cs
- BackStopAuthenticationModule.cs
- DataColumnCollection.cs
- ListenerServiceInstallComponent.cs
- BufferCache.cs
- GlyphRunDrawing.cs
- SpellerError.cs
- WebBrowserNavigatingEventHandler.cs
- BamlWriter.cs
- Configuration.cs
- SignerInfo.cs
- LogEntrySerializer.cs
- LinkLabel.cs
- BitmapDownload.cs
- Rules.cs
- GiveFeedbackEventArgs.cs
- AspProxy.cs
- SqlWorkflowPersistenceService.cs
- PropertyValue.cs
- MsmqSecureHashAlgorithm.cs
- CodeRegionDirective.cs
- BitmapImage.cs
- CodeSubDirectoriesCollection.cs
- RegionInfo.cs
- WinEventHandler.cs
- SqlRowUpdatingEvent.cs
- DataKeyCollection.cs
- Soap.cs
- IntegerValidatorAttribute.cs
- XmlSchemaSequence.cs
- AnnotationStore.cs
- SmiEventSink.cs
- EnumerableCollectionView.cs
- KerberosRequestorSecurityToken.cs
- RelatedCurrencyManager.cs
- HtmlShimManager.cs
- ProcessRequestArgs.cs
- SafePointer.cs
- TransformGroup.cs
- ReferenceService.cs
- AsymmetricSignatureFormatter.cs
- CodeIdentifiers.cs
- NumberFormatInfo.cs
- CurrentTimeZone.cs
- XmlSchemaSimpleContent.cs
- IISMapPath.cs
- RegexCharClass.cs
- ResourceDictionary.cs
- Material.cs
- WorkflowInstanceRecord.cs
- StateMachineWorkflowInstance.cs
- HttpServerVarsCollection.cs
- IndicFontClient.cs
- RtfToXamlLexer.cs
- ErrorFormatterPage.cs
- ItemAutomationPeer.cs
- DataGrid.cs
- ModifierKeysConverter.cs
- ParallelTimeline.cs
- CLSCompliantAttribute.cs
- InputLanguageCollection.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- TypeGeneratedEventArgs.cs
- UInt32Converter.cs
- SQLSingleStorage.cs
- NavigationEventArgs.cs
- XamlRtfConverter.cs
- BamlBinaryReader.cs
- MultiPropertyDescriptorGridEntry.cs
- SettingsAttributeDictionary.cs
- ChunkedMemoryStream.cs
- TableDetailsCollection.cs
- ModifiableIteratorCollection.cs
- NotifyParentPropertyAttribute.cs
- DataSourceCache.cs
- ButtonAutomationPeer.cs
- TdsParserSessionPool.cs
- SimpleTypesSurrogate.cs
- OdbcConnectionPoolProviderInfo.cs