Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- RuntimeCompatibilityAttribute.cs
- ProtectedConfigurationSection.cs
- ToolConsole.cs
- DocumentViewerConstants.cs
- ConfigXmlCDataSection.cs
- IERequestCache.cs
- ExecutionContext.cs
- Frame.cs
- HtmlGenericControl.cs
- storepermission.cs
- InProcStateClientManager.cs
- TableAutomationPeer.cs
- ImageAutomationPeer.cs
- ChannelCacheSettings.cs
- TypeBuilder.cs
- HwndTarget.cs
- BrowserCapabilitiesFactory.cs
- SectionVisual.cs
- EpmCustomContentSerializer.cs
- ApplicationContext.cs
- KeyedCollection.cs
- Exceptions.cs
- TTSEvent.cs
- RbTree.cs
- StylusButtonCollection.cs
- ToolBar.cs
- WebRequestModulesSection.cs
- DynamicValidatorEventArgs.cs
- SqlInternalConnection.cs
- OleDbConnection.cs
- TreeWalkHelper.cs
- VirtualPath.cs
- SqlCacheDependencyDatabaseCollection.cs
- StorageEntityTypeMapping.cs
- TextCompositionEventArgs.cs
- DataSvcMapFileSerializer.cs
- KeySplineConverter.cs
- WpfPayload.cs
- AuthenticationSection.cs
- OutOfMemoryException.cs
- EntityCommandCompilationException.cs
- ProviderConnectionPoint.cs
- Matrix3DValueSerializer.cs
- SystemPens.cs
- UrlPath.cs
- IdnMapping.cs
- Brushes.cs
- util.cs
- VirtualPathProvider.cs
- BinaryMessageEncoder.cs
- PolicyStatement.cs
- AuthStoreRoleProvider.cs
- Reference.cs
- HashStream.cs
- XmlWriterTraceListener.cs
- TransformedBitmap.cs
- DateTimeOffsetConverter.cs
- RouteParametersHelper.cs
- VersionPair.cs
- DecimalAnimationBase.cs
- Model3DGroup.cs
- TraceSection.cs
- Package.cs
- TreeNode.cs
- CreateDataSourceDialog.cs
- InfoCardRequestException.cs
- DocumentPageView.cs
- ListBindingConverter.cs
- SamlAuthenticationStatement.cs
- WebServiceReceiveDesigner.cs
- DefaultValueTypeConverter.cs
- RoutedEventHandlerInfo.cs
- ProofTokenCryptoHandle.cs
- HttpHeaderCollection.cs
- EntityKey.cs
- securitymgrsite.cs
- SystemColors.cs
- ForwardPositionQuery.cs
- basecomparevalidator.cs
- GroupByQueryOperator.cs
- VisualStyleInformation.cs
- WebException.cs
- SessionEndingEventArgs.cs
- ImageAttributes.cs
- DataGridCellInfo.cs
- Walker.cs
- SingleConverter.cs
- ProcessModule.cs
- WizardStepBase.cs
- ClientRuntimeConfig.cs
- Reference.cs
- XMLSyntaxException.cs
- BlockingCollection.cs
- KnowledgeBase.cs
- CodeExpressionStatement.cs
- VerificationAttribute.cs
- XmlSchemaChoice.cs
- PbrsForward.cs
- Clock.cs
- CompositeDataBoundControl.cs