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 / SystemInfo.cs / 1 / SystemInfo.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Util { internal static class SystemInfo { static int _trueNumberOfProcessors; static internal int GetNumProcessCPUs() { if (_trueNumberOfProcessors == 0) { UnsafeNativeMethods.SYSTEM_INFO si; UnsafeNativeMethods.GetSystemInfo(out si); if (si.dwNumberOfProcessors == 1) { _trueNumberOfProcessors = 1; } else { // KERNEL32.DLL:GetCurrentProcess() always returns -1 under NT // Note: not really a handle (no need to CloseHandle()) IntPtr processHandle = UnsafeNativeMethods.INVALID_HANDLE_VALUE; IntPtr processAffinityMask; IntPtr systemAffinityMask; int returnCode = UnsafeNativeMethods.GetProcessAffinityMask( processHandle, out processAffinityMask, out systemAffinityMask); if (returnCode == 0) { _trueNumberOfProcessors = 1; } else { // if cpu affinity is set to a single processor busy waiting is a waste of time int numProcessors = 0; if (IntPtr.Size == 4) { uint mask = (uint) processAffinityMask; for (; mask != 0; mask >>= 1) { if ((mask & 1) == 1) { ++numProcessors; } } } else { ulong mask = (ulong) processAffinityMask; for (; mask != 0; mask >>= 1) { if ((mask & 1) == 1) { ++numProcessors; } } } _trueNumberOfProcessors = numProcessors; } } } Debug.Assert(_trueNumberOfProcessors > 0); return _trueNumberOfProcessors; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Util { internal static class SystemInfo { static int _trueNumberOfProcessors; static internal int GetNumProcessCPUs() { if (_trueNumberOfProcessors == 0) { UnsafeNativeMethods.SYSTEM_INFO si; UnsafeNativeMethods.GetSystemInfo(out si); if (si.dwNumberOfProcessors == 1) { _trueNumberOfProcessors = 1; } else { // KERNEL32.DLL:GetCurrentProcess() always returns -1 under NT // Note: not really a handle (no need to CloseHandle()) IntPtr processHandle = UnsafeNativeMethods.INVALID_HANDLE_VALUE; IntPtr processAffinityMask; IntPtr systemAffinityMask; int returnCode = UnsafeNativeMethods.GetProcessAffinityMask( processHandle, out processAffinityMask, out systemAffinityMask); if (returnCode == 0) { _trueNumberOfProcessors = 1; } else { // if cpu affinity is set to a single processor busy waiting is a waste of time int numProcessors = 0; if (IntPtr.Size == 4) { uint mask = (uint) processAffinityMask; for (; mask != 0; mask >>= 1) { if ((mask & 1) == 1) { ++numProcessors; } } } else { ulong mask = (ulong) processAffinityMask; for (; mask != 0; mask >>= 1) { if ((mask & 1) == 1) { ++numProcessors; } } } _trueNumberOfProcessors = numProcessors; } } } Debug.Assert(_trueNumberOfProcessors > 0); return _trueNumberOfProcessors; } } } // 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
- StylusEventArgs.cs
- RealizationDrawingContextWalker.cs
- SocketElement.cs
- SpecialNameAttribute.cs
- CharEntityEncoderFallback.cs
- IntPtr.cs
- CollectionContainer.cs
- XmlDictionary.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- TaskHelper.cs
- IdentityModelStringsVersion1.cs
- Transform3D.cs
- NavigationService.cs
- ObjectDataSource.cs
- StoreItemCollection.Loader.cs
- NaturalLanguageHyphenator.cs
- BooleanFacetDescriptionElement.cs
- PackWebResponse.cs
- EventMap.cs
- WebExceptionStatus.cs
- ChildDocumentBlock.cs
- FixedSOMLineCollection.cs
- ConfigXmlCDataSection.cs
- ListComponentEditorPage.cs
- TypeLibConverter.cs
- CollectionBuilder.cs
- ScriptRegistrationManager.cs
- NavigateEvent.cs
- XmlSubtreeReader.cs
- PreviewPageInfo.cs
- BamlLocalizabilityResolver.cs
- BackStopAuthenticationModule.cs
- MethodRental.cs
- MarshalDirectiveException.cs
- ConditionedDesigner.cs
- RemotingSurrogateSelector.cs
- XmlNavigatorFilter.cs
- securestring.cs
- DependencyPropertyValueSerializer.cs
- Crypto.cs
- DataGridRelationshipRow.cs
- XmlILConstructAnalyzer.cs
- CheckableControlBaseAdapter.cs
- ColorPalette.cs
- BCLDebug.cs
- HealthMonitoringSection.cs
- EndpointNotFoundException.cs
- ObjectTag.cs
- FormViewDeletedEventArgs.cs
- ElementMarkupObject.cs
- FixedSOMLineRanges.cs
- StringValidator.cs
- FocusTracker.cs
- StreamWriter.cs
- UInt16Storage.cs
- FilterQuery.cs
- BCLDebug.cs
- IdentityModelDictionary.cs
- DataProtection.cs
- SqlDataSourceSummaryPanel.cs
- TableItemProviderWrapper.cs
- TableParagraph.cs
- GraphicsState.cs
- ByteStack.cs
- InvalidFilterCriteriaException.cs
- DiagnosticsConfigurationHandler.cs
- HttpResponseHeader.cs
- StylusTip.cs
- HybridDictionary.cs
- OleDbFactory.cs
- DbConnectionPool.cs
- AnnotationComponentManager.cs
- ServiceBusyException.cs
- FixedDocument.cs
- EnlistmentTraceIdentifier.cs
- ErrorHandler.cs
- HtmlShimManager.cs
- MinMaxParagraphWidth.cs
- ReadOnlyCollectionBase.cs
- FunctionParameter.cs
- PingReply.cs
- SchemaComplexType.cs
- CharAnimationUsingKeyFrames.cs
- InvalidCastException.cs
- Color.cs
- ValidationRuleCollection.cs
- UIElementParaClient.cs
- ExpressionBuilder.cs
- DbTransaction.cs
- Preprocessor.cs
- RecipientIdentity.cs
- ValidateNames.cs
- WebPartActionVerb.cs
- Events.cs
- IncrementalCompileAnalyzer.cs
- Enum.cs
- ToolboxItemImageConverter.cs
- SqlFunctionAttribute.cs
- XmlDictionaryString.cs
- IUnknownConstantAttribute.cs