Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Util / SystemInfo.cs / 1305376 / 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
- ConfigurationManager.cs
- DocumentSequence.cs
- DesignerActionUIStateChangeEventArgs.cs
- Inflater.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- CreatingCookieEventArgs.cs
- ToolStripGripRenderEventArgs.cs
- SqlTriggerAttribute.cs
- CodeDomLocalizationProvider.cs
- TypeUtils.cs
- ExtensionQuery.cs
- LocatorGroup.cs
- CompiledQuery.cs
- DelegateBodyWriter.cs
- Win32Native.cs
- TypeResolver.cs
- TableCellAutomationPeer.cs
- ExpressionBinding.cs
- CapabilitiesPattern.cs
- NotifyParentPropertyAttribute.cs
- StartUpEventArgs.cs
- StylusCaptureWithinProperty.cs
- PropertyMapper.cs
- ISAPIApplicationHost.cs
- ScrollProviderWrapper.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- XNameConverter.cs
- GridViewSortEventArgs.cs
- TypeNameHelper.cs
- FixedDSBuilder.cs
- IPipelineRuntime.cs
- ToolStripItemEventArgs.cs
- EdmScalarPropertyAttribute.cs
- PriorityBinding.cs
- DetailsViewPageEventArgs.cs
- CodeDirectoryCompiler.cs
- ItemsControlAutomationPeer.cs
- Vector3dCollection.cs
- FrugalList.cs
- ToolStripPanelRow.cs
- NavigationProperty.cs
- User.cs
- HtmlFormWrapper.cs
- ViewValidator.cs
- StrokeCollectionConverter.cs
- TextEditorMouse.cs
- QilGenerator.cs
- COAUTHIDENTITY.cs
- ApplicationFileCodeDomTreeGenerator.cs
- InheritanceContextChangedEventManager.cs
- CollectionChangedEventManager.cs
- SendKeys.cs
- SizeChangedInfo.cs
- ConnectionStringsSection.cs
- StateDesignerConnector.cs
- IdentityModelStringsVersion1.cs
- FixedDocument.cs
- URIFormatException.cs
- HttpModulesSection.cs
- UpdatePanel.cs
- SoapAttributeAttribute.cs
- SmtpLoginAuthenticationModule.cs
- AppDomainFactory.cs
- EditingCommands.cs
- DependencyPropertyKey.cs
- GetIsBrowserClientRequest.cs
- QueryStatement.cs
- ImageListUtils.cs
- mediaclock.cs
- TextServicesDisplayAttribute.cs
- XsltContext.cs
- WebPartChrome.cs
- ImageCodecInfoPrivate.cs
- InputScopeAttribute.cs
- XamlGridLengthSerializer.cs
- NotConverter.cs
- HMACSHA256.cs
- URLAttribute.cs
- TrackingMemoryStreamFactory.cs
- TabControl.cs
- DetailsViewInsertEventArgs.cs
- SchemaReference.cs
- Imaging.cs
- __ConsoleStream.cs
- CodeLabeledStatement.cs
- QilValidationVisitor.cs
- FileSystemInfo.cs
- ValidatingPropertiesEventArgs.cs
- XmlExpressionDumper.cs
- DBCommandBuilder.cs
- GridViewItemAutomationPeer.cs
- SamlConditions.cs
- UInt32.cs
- RuleSettings.cs
- HttpRawResponse.cs
- DataTableClearEvent.cs
- DataGridViewComboBoxEditingControl.cs
- TlsnegoTokenAuthenticator.cs
- WorkflowDesignerMessageFilter.cs
- Package.cs