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
- MediaTimeline.cs
- TransformPattern.cs
- FormatConvertedBitmap.cs
- LambdaCompiler.Statements.cs
- ApplicationManager.cs
- CodePageEncoding.cs
- ModuleBuilder.cs
- DesignerAttributeInfo.cs
- AppDomainAttributes.cs
- FontResourceCache.cs
- SourceFileBuildProvider.cs
- Optimizer.cs
- CultureInfo.cs
- AdapterUtil.cs
- TrackingRecordPreFilter.cs
- SizeConverter.cs
- CompModSwitches.cs
- MarkupObject.cs
- CompilerCollection.cs
- GeometryDrawing.cs
- WmlPageAdapter.cs
- XmlILAnnotation.cs
- PerformanceCounterNameAttribute.cs
- FontFamily.cs
- HttpConfigurationSystem.cs
- HMACSHA512.cs
- TableRowGroup.cs
- SmiSettersStream.cs
- Propagator.JoinPropagator.cs
- Rules.cs
- PersonalizationEntry.cs
- Polyline.cs
- TypeDescriptionProvider.cs
- TreeNodeMouseHoverEvent.cs
- TimerElapsedEvenArgs.cs
- ParsedAttributeCollection.cs
- RetrieveVirtualItemEventArgs.cs
- Triangle.cs
- RemotingException.cs
- QueueProcessor.cs
- LinkedResource.cs
- SendKeys.cs
- Overlapped.cs
- TextTreeTextElementNode.cs
- XmlHierarchyData.cs
- HttpDebugHandler.cs
- QueryMatcher.cs
- MultilineStringConverter.cs
- MissingMemberException.cs
- EndpointDiscoveryMetadata11.cs
- GenericUI.cs
- ECDsaCng.cs
- RequestCache.cs
- FeatureSupport.cs
- FrugalMap.cs
- SetterTriggerConditionValueConverter.cs
- InheritanceContextHelper.cs
- DesignerAdapterAttribute.cs
- PackageRelationshipCollection.cs
- BufferedStream.cs
- ParseNumbers.cs
- LineBreak.cs
- ApplicationSecurityInfo.cs
- GeneralTransform3D.cs
- SQLSingleStorage.cs
- BatchParser.cs
- TreeViewAutomationPeer.cs
- CalendarDay.cs
- TextDecorations.cs
- Missing.cs
- CachedTypeface.cs
- InstanceDescriptor.cs
- OleDbInfoMessageEvent.cs
- AdapterDictionary.cs
- OracleBinary.cs
- CodeIdentifiers.cs
- InstanceLockedException.cs
- TextElementAutomationPeer.cs
- Vector3DCollectionValueSerializer.cs
- unitconverter.cs
- SubpageParaClient.cs
- DocumentXmlWriter.cs
- IsolatedStorageFileStream.cs
- PrePrepareMethodAttribute.cs
- PropertyIDSet.cs
- RadioButtonAutomationPeer.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- HierarchicalDataBoundControl.cs
- DaylightTime.cs
- DispatchOperation.cs
- XAMLParseException.cs
- ListItemCollection.cs
- TextBounds.cs
- UserControl.cs
- MailAddress.cs
- NavigationHelper.cs
- NavigationWindowAutomationPeer.cs
- DataSet.cs
- _Win32.cs
- Odbc32.cs