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
- SymbolEqualComparer.cs
- UnionCodeGroup.cs
- XsltFunctions.cs
- CommandHelpers.cs
- ListViewItemSelectionChangedEvent.cs
- ModuleBuilder.cs
- Logging.cs
- ClientData.cs
- CodeRemoveEventStatement.cs
- RuleCache.cs
- StylusButtonEventArgs.cs
- DataGridViewComboBoxColumnDesigner.cs
- SponsorHelper.cs
- Helper.cs
- XmlQualifiedName.cs
- DbTypeMap.cs
- SystemSounds.cs
- HostedBindingBehavior.cs
- HybridWebProxyFinder.cs
- RemotingServices.cs
- VariantWrapper.cs
- WebAdminConfigurationHelper.cs
- ListViewAutomationPeer.cs
- XMLUtil.cs
- CancellationHandler.cs
- SystemWebSectionGroup.cs
- SelectorAutomationPeer.cs
- Profiler.cs
- SortExpressionBuilder.cs
- BitmapImage.cs
- SessionEndedEventArgs.cs
- SimplePropertyEntry.cs
- TaskbarItemInfo.cs
- WebServiceReceive.cs
- DesignTimeVisibleAttribute.cs
- TraceData.cs
- JsonUriDataContract.cs
- AmbiguousMatchException.cs
- OleDbTransaction.cs
- ContextDataSourceView.cs
- DoWorkEventArgs.cs
- XPathDescendantIterator.cs
- PeerApplicationLaunchInfo.cs
- FileClassifier.cs
- NavigationHelper.cs
- ExpressionNormalizer.cs
- RootCodeDomSerializer.cs
- ProfileBuildProvider.cs
- RuntimeTransactionHandle.cs
- TextWriterEngine.cs
- RIPEMD160Managed.cs
- WindowsSysHeader.cs
- KnownAssembliesSet.cs
- ChannelDispatcherCollection.cs
- HostSecurityManager.cs
- PeerNameResolver.cs
- ListViewItemMouseHoverEvent.cs
- ParserContext.cs
- PrimitiveXmlSerializers.cs
- TagMapCollection.cs
- PageAction.cs
- HScrollBar.cs
- DisplayClaim.cs
- FrameworkPropertyMetadata.cs
- SafeFileHandle.cs
- TableCellCollection.cs
- SamlAuthenticationClaimResource.cs
- DataViewSettingCollection.cs
- SkewTransform.cs
- DefaultBindingPropertyAttribute.cs
- QueryParameter.cs
- TableSectionStyle.cs
- SqlCachedBuffer.cs
- Control.cs
- FormsAuthentication.cs
- DataGridViewElement.cs
- XmlMapping.cs
- BaseTemplateBuildProvider.cs
- VarRemapper.cs
- _TLSstream.cs
- SkinBuilder.cs
- CfgParser.cs
- StorageEntityTypeMapping.cs
- WMIGenerator.cs
- Material.cs
- XXXOnTypeBuilderInstantiation.cs
- CultureInfoConverter.cs
- DrawingBrush.cs
- ThicknessConverter.cs
- CapabilitiesSection.cs
- PropertyDescriptorComparer.cs
- DataSetFieldSchema.cs
- ContainerControl.cs
- PropertyGeneratedEventArgs.cs
- SafeCryptHandles.cs
- XmlWellformedWriter.cs
- WindowsFormsSectionHandler.cs
- PrimitiveOperationFormatter.cs
- XmlDocumentSchema.cs
- ELinqQueryState.cs