Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ //// 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
- DataBindingHandlerAttribute.cs
- EmptyStringExpandableObjectConverter.cs
- XmlNodeComparer.cs
- UIElementCollection.cs
- DockAndAnchorLayout.cs
- SingleAnimation.cs
- _ConnectStream.cs
- DesignerDataView.cs
- PropertyHelper.cs
- FormsAuthenticationTicket.cs
- DataServiceException.cs
- TracedNativeMethods.cs
- XmlResolver.cs
- CopyAttributesAction.cs
- ClientScriptManager.cs
- RequestContext.cs
- StyleTypedPropertyAttribute.cs
- serverconfig.cs
- StorageConditionPropertyMapping.cs
- FileUtil.cs
- GPPOINTF.cs
- hebrewshape.cs
- RemotingServices.cs
- FixedPageProcessor.cs
- SafeNativeMethods.cs
- DrawingImage.cs
- TargetParameterCountException.cs
- InputLanguage.cs
- M3DUtil.cs
- XmlDataDocument.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- ISO2022Encoding.cs
- DuplicateWaitObjectException.cs
- FixUpCollection.cs
- PrintDialog.cs
- PageRanges.cs
- SqlReorderer.cs
- PriorityBinding.cs
- RightsManagementInformation.cs
- SQLResource.cs
- EpmContentSerializer.cs
- UpdateRecord.cs
- PointAnimationClockResource.cs
- FileLoadException.cs
- ResourceManager.cs
- BStrWrapper.cs
- ScrollViewer.cs
- MachineKeyConverter.cs
- StringStorage.cs
- FileNotFoundException.cs
- TimeStampChecker.cs
- Context.cs
- ObjectDataSourceView.cs
- EditableTreeList.cs
- ConfigXmlCDataSection.cs
- ExpressionBindingCollection.cs
- ProxyGenerationError.cs
- CircleHotSpot.cs
- VisualCollection.cs
- TraceUtils.cs
- SerialStream.cs
- TableParaClient.cs
- OutputCacheSection.cs
- CallbackHandler.cs
- ApplicationInfo.cs
- DatePickerTextBox.cs
- ReceiveErrorHandling.cs
- KnownIds.cs
- ExpandSegment.cs
- IIS7WorkerRequest.cs
- FunctionParameter.cs
- BindingBase.cs
- PropertyEmitterBase.cs
- KeyBinding.cs
- RemoteWebConfigurationHostStream.cs
- SignatureTargetIdManager.cs
- SortQuery.cs
- FixedPageProcessor.cs
- XmlLoader.cs
- ToolStripSeparatorRenderEventArgs.cs
- InputMethodStateTypeInfo.cs
- TraceUtils.cs
- ValueUnavailableException.cs
- XmlSchemaComplexContent.cs
- ThreadStaticAttribute.cs
- ServiceModelConfigurationSection.cs
- hresults.cs
- GridView.cs
- SByteStorage.cs
- ReflectionPermission.cs
- HttpHandlerActionCollection.cs
- SelectedCellsChangedEventArgs.cs
- UpDownBase.cs
- CipherData.cs
- ProfileBuildProvider.cs
- XPathQilFactory.cs
- CreateParams.cs
- XPathDocument.cs
- Int32Rect.cs
- EditCommandColumn.cs