Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DatePicker.cs
- DeviceContext.cs
- PolicyException.cs
- SerializationObjectManager.cs
- HtmlAnchor.cs
- EventSourceCreationData.cs
- AsyncOperationManager.cs
- DesignerDataRelationship.cs
- Point3DAnimationUsingKeyFrames.cs
- VisualSerializer.cs
- XmlSerializer.cs
- ConnectionStringsSection.cs
- RelationshipEnd.cs
- ListenerElementsCollection.cs
- XmlExtensionFunction.cs
- PackageDocument.cs
- RegexCapture.cs
- PieceNameHelper.cs
- TabletDevice.cs
- XmlValidatingReader.cs
- CapabilitiesPattern.cs
- WpfSharedXamlSchemaContext.cs
- XmlIgnoreAttribute.cs
- FontUnitConverter.cs
- ProfilePropertyMetadata.cs
- SecurityDescriptor.cs
- XmlRawWriterWrapper.cs
- UpdatePanelTrigger.cs
- CodeSnippetExpression.cs
- xmlfixedPageInfo.cs
- MDIClient.cs
- AppDomain.cs
- FileInfo.cs
- LinkLabelLinkClickedEvent.cs
- ReadOnlyNameValueCollection.cs
- TextPattern.cs
- ProtocolViolationException.cs
- ChineseLunisolarCalendar.cs
- AbsoluteQuery.cs
- EventHandlerList.cs
- ListViewUpdateEventArgs.cs
- figurelengthconverter.cs
- RegexStringValidatorAttribute.cs
- ProfilePropertySettingsCollection.cs
- MetaData.cs
- ErasingStroke.cs
- Stackframe.cs
- _AutoWebProxyScriptHelper.cs
- FormsAuthenticationTicket.cs
- SharingService.cs
- UIAgentAsyncParams.cs
- TypeElement.cs
- ApplicationHost.cs
- Activity.cs
- Timer.cs
- DropShadowBitmapEffect.cs
- Imaging.cs
- CodeTypeMember.cs
- DisposableCollectionWrapper.cs
- ComponentManagerBroker.cs
- UriSection.cs
- AndCondition.cs
- CookielessHelper.cs
- ResourcePermissionBase.cs
- AutoResizedEvent.cs
- CodeSnippetStatement.cs
- WorkItem.cs
- PathFigureCollectionConverter.cs
- entityreference_tresulttype.cs
- CommandConverter.cs
- RuntimeArgument.cs
- UiaCoreTypesApi.cs
- TextAction.cs
- AddInIpcChannel.cs
- FrameworkContentElementAutomationPeer.cs
- DivideByZeroException.cs
- SoapHeaderAttribute.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- CachingHintValidation.cs
- Base64Stream.cs
- XhtmlBasicTextViewAdapter.cs
- XmlSchemaCompilationSettings.cs
- BezierSegment.cs
- ListParagraph.cs
- BitmapDownload.cs
- AlphaSortedEnumConverter.cs
- ViewStateModeByIdAttribute.cs
- ProtocolElement.cs
- updateconfighost.cs
- MaskInputRejectedEventArgs.cs
- OpCellTreeNode.cs
- TransformProviderWrapper.cs
- XmlSerializerFactory.cs
- FilterQueryOptionExpression.cs
- MailAddressParser.cs
- MailAddress.cs
- CellIdBoolean.cs
- DetailsViewModeEventArgs.cs
- UnsafeNativeMethods.cs
- TextParentUndoUnit.cs