Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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; } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// 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; } } } } } // 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
- CodeAttributeArgumentCollection.cs
- InfoCardProofToken.cs
- ActivityTypeDesigner.xaml.cs
- QueryResponse.cs
- StandardToolWindows.cs
- ProviderIncompatibleException.cs
- OneOfConst.cs
- RecognizedWordUnit.cs
- PropertyIDSet.cs
- InputChannelAcceptor.cs
- SmtpNetworkElement.cs
- CFStream.cs
- PropertyGridEditorPart.cs
- TransactionException.cs
- CodeNamespace.cs
- EmbeddedMailObject.cs
- PageSettings.cs
- InsufficientMemoryException.cs
- XmlTextReaderImplHelpers.cs
- MenuStrip.cs
- QilChoice.cs
- MimeAnyImporter.cs
- _RequestCacheProtocol.cs
- LockedAssemblyCache.cs
- ContractInferenceHelper.cs
- Maps.cs
- TextFormatterImp.cs
- XmlAttributeCache.cs
- TextRangeEdit.cs
- FilterFactory.cs
- grammarelement.cs
- SerializationException.cs
- EntityContainerEntitySetDefiningQuery.cs
- OutputCacheProfile.cs
- TextElement.cs
- PublisherMembershipCondition.cs
- DescriptionAttribute.cs
- QueryStringConverter.cs
- HeaderedContentControl.cs
- NullExtension.cs
- ConstraintManager.cs
- Int32RectValueSerializer.cs
- _ScatterGatherBuffers.cs
- FormCollection.cs
- DataIdProcessor.cs
- Sql8ExpressionRewriter.cs
- BindingContext.cs
- FixedTextContainer.cs
- BypassElement.cs
- RootBrowserWindow.cs
- PhonemeEventArgs.cs
- MenuScrollingVisibilityConverter.cs
- AppDomainAttributes.cs
- TransactionManager.cs
- DispatcherExceptionEventArgs.cs
- ExpandSegment.cs
- TeredoHelper.cs
- StrongNameKeyPair.cs
- ClientCultureInfo.cs
- Graphics.cs
- AlternateView.cs
- OutputCacheProviderCollection.cs
- SeverityFilter.cs
- ECDiffieHellman.cs
- TypeBinaryExpression.cs
- FacetChecker.cs
- DataGridrowEditEndingEventArgs.cs
- TextTreeUndo.cs
- DataBoundControlHelper.cs
- HttpAsyncResult.cs
- SoapHeaders.cs
- GraphicsPath.cs
- UInt64Converter.cs
- DataRowComparer.cs
- Membership.cs
- PrintPreviewControl.cs
- MenuItemBindingCollection.cs
- ExpressionBuilderContext.cs
- XmlNodeChangedEventManager.cs
- ProxyHwnd.cs
- SqlDependencyUtils.cs
- _BasicClient.cs
- BrowserCapabilitiesFactoryBase.cs
- CacheMemory.cs
- SynchronizedDispatch.cs
- ProxySimple.cs
- TextRangeEditLists.cs
- EditCommandColumn.cs
- ButtonChrome.cs
- SchemaElementLookUpTable.cs
- DtdParser.cs
- Encoder.cs
- Base64Stream.cs
- BamlResourceContent.cs
- LoadWorkflowByKeyAsyncResult.cs
- InlineObject.cs
- GridItemPatternIdentifiers.cs
- ComAdminWrapper.cs
- DataBinding.cs
- ViewManager.cs