Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- ReliabilityContractAttribute.cs
- UserCancellationException.cs
- DispatcherOperation.cs
- PermissionToken.cs
- FixedHighlight.cs
- ProfileBuildProvider.cs
- CodeAttributeDeclarationCollection.cs
- DbProviderSpecificTypePropertyAttribute.cs
- DetailsViewAutoFormat.cs
- SerializationSectionGroup.cs
- TraceListeners.cs
- ComponentResourceManager.cs
- FaultCallbackWrapper.cs
- WebExceptionStatus.cs
- MergeFilterQuery.cs
- WsatServiceAddress.cs
- DataSetUtil.cs
- TraceLog.cs
- TableLayoutCellPaintEventArgs.cs
- EntityDataSourceView.cs
- SqlCrossApplyToCrossJoin.cs
- BulletChrome.cs
- WebPartCancelEventArgs.cs
- StringReader.cs
- SettingsContext.cs
- VariantWrapper.cs
- SimpleLine.cs
- PersonalizationStateInfo.cs
- SafeSecurityHelper.cs
- EventLogPermissionAttribute.cs
- CustomError.cs
- ToolStripDropTargetManager.cs
- DifferencingCollection.cs
- MemberAccessException.cs
- Socket.cs
- Rotation3D.cs
- DataGridBoolColumn.cs
- EnumMember.cs
- UpdateManifestForBrowserApplication.cs
- CacheSection.cs
- Utils.cs
- listitem.cs
- DiscoveryClientElement.cs
- DrawingAttributeSerializer.cs
- BindValidationContext.cs
- HttpException.cs
- CancellationTokenRegistration.cs
- CompositeScriptReference.cs
- WindowCollection.cs
- ImageClickEventArgs.cs
- PackWebResponse.cs
- SystemMulticastIPAddressInformation.cs
- Stackframe.cs
- MeshGeometry3D.cs
- SelectedDatesCollection.cs
- CustomError.cs
- TokenizerHelper.cs
- DefaultCommandConverter.cs
- SamlAssertion.cs
- Normalizer.cs
- StrongNameIdentityPermission.cs
- CategoryAttribute.cs
- FormsAuthenticationUser.cs
- SoapClientMessage.cs
- SubtreeProcessor.cs
- DynamicRendererThreadManager.cs
- ScriptResourceHandler.cs
- PageAsyncTask.cs
- ConstraintCollection.cs
- ApplicationSecurityManager.cs
- HtmlEncodedRawTextWriter.cs
- SymmetricKey.cs
- XPathMessageFilterElement.cs
- EventWaitHandle.cs
- ActiveXContainer.cs
- NetStream.cs
- RemoteWebConfigurationHost.cs
- HotCommands.cs
- TransformBlockRequest.cs
- XmlSchemaType.cs
- HttpModuleAction.cs
- BinaryNode.cs
- XmlILConstructAnalyzer.cs
- DataExchangeServiceBinder.cs
- FrameDimension.cs
- Animatable.cs
- _OverlappedAsyncResult.cs
- BaseParaClient.cs
- mactripleDES.cs
- XmlSchemaCompilationSettings.cs
- ResourceDisplayNameAttribute.cs
- JavaScriptString.cs
- SelectionService.cs
- SimpleLine.cs
- MultiByteCodec.cs
- UnhandledExceptionEventArgs.cs
- ListControlConvertEventArgs.cs
- ClrPerspective.cs
- RawStylusActions.cs
- BaseHashHelper.cs