Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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;
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- LocalizableAttribute.cs
- MobileComponentEditorPage.cs
- UniqueTransportManagerRegistration.cs
- SystemIPInterfaceStatistics.cs
- SelectionRange.cs
- ParseHttpDate.cs
- WebPartVerbCollection.cs
- EpmSyndicationContentDeSerializer.cs
- ServiceHttpHandlerFactory.cs
- TreeView.cs
- SqlDataSourceQueryEditorForm.cs
- Path.cs
- XmlElement.cs
- SpeechRecognizer.cs
- LineServicesRun.cs
- TableCellCollection.cs
- GraphicsPath.cs
- _ChunkParse.cs
- TemplatePropertyEntry.cs
- followingsibling.cs
- AnnotationHighlightLayer.cs
- WebServiceClientProxyGenerator.cs
- PolyQuadraticBezierSegmentFigureLogic.cs
- CqlErrorHelper.cs
- StreamWriter.cs
- RecommendedAsConfigurableAttribute.cs
- PeekCompletedEventArgs.cs
- WsdlHelpGeneratorElement.cs
- SmtpException.cs
- SharingService.cs
- MemberMaps.cs
- XmlNamespaceManager.cs
- DesignTimeTemplateParser.cs
- AccessibleObject.cs
- IDReferencePropertyAttribute.cs
- XPathArrayIterator.cs
- IxmlLineInfo.cs
- ObjectMemberMapping.cs
- Pair.cs
- PresentationAppDomainManager.cs
- InkPresenterAutomationPeer.cs
- StylusPointPropertyUnit.cs
- XsltSettings.cs
- ProtocolViolationException.cs
- precedingquery.cs
- LayoutUtils.cs
- XmlSchemaObjectTable.cs
- TypeHelpers.cs
- HotCommands.cs
- TextEffectCollection.cs
- NativeMethods.cs
- MessageFormatterConverter.cs
- DataGridPagerStyle.cs
- WebConfigurationFileMap.cs
- WebBrowserProgressChangedEventHandler.cs
- DataGridViewButtonCell.cs
- _HeaderInfoTable.cs
- EntityDescriptor.cs
- EntitySetDataBindingList.cs
- NativeMethods.cs
- CategoryGridEntry.cs
- HtmlWindowCollection.cs
- Animatable.cs
- WindowInteropHelper.cs
- WindowsListViewSubItem.cs
- InputMethod.cs
- SmiConnection.cs
- SqlServer2KCompatibilityCheck.cs
- SolidColorBrush.cs
- UInt16Storage.cs
- TraceXPathNavigator.cs
- HtmlTernaryTree.cs
- ModuleConfigurationInfo.cs
- TextEmbeddedObject.cs
- base64Transforms.cs
- FixUp.cs
- PathStreamGeometryContext.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- RepeatButtonAutomationPeer.cs
- TypeConverter.cs
- DataGridViewRowPrePaintEventArgs.cs
- AttachedAnnotationChangedEventArgs.cs
- XsdBuilder.cs
- CheckBoxList.cs
- PersistenceTypeAttribute.cs
- PermissionListSet.cs
- HttpProfileBase.cs
- translator.cs
- DisplayMemberTemplateSelector.cs
- DataGridTableCollection.cs
- XmlFormatMapping.cs
- ContentType.cs
- MouseButton.cs
- RuntimeConfig.cs
- ContentPresenter.cs
- TextRange.cs
- ContainerParagraph.cs
- AxParameterData.cs
- ObjectPersistData.cs
- FileDialog.cs