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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MetadataPropertyCollection.cs
- ContainerControl.cs
- ScriptComponentDescriptor.cs
- WinEventWrap.cs
- ActivityBindForm.cs
- ProcessModule.cs
- String.cs
- CodeTypeDeclaration.cs
- TextAutomationPeer.cs
- TypedLocationWrapper.cs
- UnorderedHashRepartitionStream.cs
- DataObjectSettingDataEventArgs.cs
- ScrollBar.cs
- SqlDataSourceDesigner.cs
- precedingsibling.cs
- WorkflowService.cs
- PropertyPathConverter.cs
- SkipStoryboardToFill.cs
- SplitterPanel.cs
- ADRole.cs
- XmlSerializationGeneratedCode.cs
- DisplayNameAttribute.cs
- KeyPressEvent.cs
- XmlSchemaNotation.cs
- TheQuery.cs
- NativeRecognizer.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- FilterableAttribute.cs
- CaretElement.cs
- DivideByZeroException.cs
- GetImportedCardRequest.cs
- InsufficientMemoryException.cs
- SettingsProperty.cs
- ValueUnavailableException.cs
- RecordsAffectedEventArgs.cs
- ClientType.cs
- ScaleTransform.cs
- NGCPageContentCollectionSerializerAsync.cs
- QuotedPrintableStream.cs
- ComponentCollection.cs
- BinaryNegotiation.cs
- Tile.cs
- InboundActivityHelper.cs
- StackSpiller.Bindings.cs
- SettingsSection.cs
- StringConcat.cs
- QilStrConcat.cs
- UInt32Converter.cs
- ApplicationInterop.cs
- FileLogRecordEnumerator.cs
- _SslStream.cs
- DataSetSchema.cs
- WorkflowEventArgs.cs
- ApplicationHost.cs
- Journaling.cs
- DeviceContexts.cs
- IntegerValidatorAttribute.cs
- SqlExpander.cs
- ServicePoint.cs
- ListSourceHelper.cs
- Properties.cs
- ConnectionStringSettingsCollection.cs
- OrthographicCamera.cs
- ScriptingJsonSerializationSection.cs
- WebHttpEndpointElement.cs
- CapabilitiesUse.cs
- Condition.cs
- FontFamilyValueSerializer.cs
- Win32Exception.cs
- DataControlCommands.cs
- TextTreeTextNode.cs
- IndexedEnumerable.cs
- AggregateNode.cs
- GridViewCellAutomationPeer.cs
- ClientCredentials.cs
- PolicyChain.cs
- DrawingBrush.cs
- XmlWrappingReader.cs
- SqlNamer.cs
- GlobalProxySelection.cs
- LongValidatorAttribute.cs
- PolicyLevel.cs
- WindowsToolbarAsMenu.cs
- GlobalItem.cs
- ActivityCodeDomSerializer.cs
- _StreamFramer.cs
- CodeGeneratorOptions.cs
- WhitespaceRuleReader.cs
- OleDbDataReader.cs
- XmlAttributes.cs
- DefaultEventAttribute.cs
- PeerCredentialElement.cs
- MediaTimeline.cs
- SqlTransaction.cs
- MenuItem.cs
- ProvidePropertyAttribute.cs
- UrlAuthFailedErrorFormatter.cs
- PasswordPropertyTextAttribute.cs
- FieldToken.cs
- HealthMonitoringSectionHelper.cs