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
- SendKeys.cs
- SqlMethodCallConverter.cs
- UnitySerializationHolder.cs
- NetCodeGroup.cs
- ListViewDeletedEventArgs.cs
- WebPartVerb.cs
- SyndicationFeed.cs
- CacheForPrimitiveTypes.cs
- InvalidPropValue.cs
- ScaleTransform.cs
- DataServiceSaveChangesEventArgs.cs
- QueryCursorEventArgs.cs
- SystemResources.cs
- ApplicationProxyInternal.cs
- BinaryNode.cs
- AssertValidation.cs
- AddressAccessDeniedException.cs
- ToolboxDataAttribute.cs
- TreeSet.cs
- DataGridViewRowsAddedEventArgs.cs
- OdbcRowUpdatingEvent.cs
- DbBuffer.cs
- PasswordTextContainer.cs
- AlphaSortedEnumConverter.cs
- ServiceNameElementCollection.cs
- FeatureSupport.cs
- IdentityModelDictionary.cs
- XmlTextEncoder.cs
- ConfigurationPropertyCollection.cs
- DbExpressionVisitor.cs
- List.cs
- TransactionScopeDesigner.cs
- ApplicationGesture.cs
- WindowsRichEditRange.cs
- HtmlInputRadioButton.cs
- Automation.cs
- ToolboxComponentsCreatedEventArgs.cs
- XmlAttributeOverrides.cs
- DefaultAsyncDataDispatcher.cs
- ChtmlImageAdapter.cs
- BufferModesCollection.cs
- CreateWorkflowOwnerCommand.cs
- EventLogPermissionEntryCollection.cs
- KerberosSecurityTokenProvider.cs
- WorkflowDesignerColors.cs
- MobileListItem.cs
- SystemDiagnosticsSection.cs
- MailAddressCollection.cs
- ViewStateModeByIdAttribute.cs
- SmtpDateTime.cs
- SqlDataSourceFilteringEventArgs.cs
- SQLDecimal.cs
- FileDialogCustomPlace.cs
- RecognizedAudio.cs
- ContentElement.cs
- MediaPlayerState.cs
- ElementNotAvailableException.cs
- LexicalChunk.cs
- KeyValueInternalCollection.cs
- SqlParameter.cs
- SqlDataSourceFilteringEventArgs.cs
- MarkupWriter.cs
- MatrixUtil.cs
- ToolBarButtonClickEvent.cs
- DataBoundControlHelper.cs
- BasePropertyDescriptor.cs
- PointLight.cs
- DataTemplateSelector.cs
- ProcessInfo.cs
- XslCompiledTransform.cs
- DataSvcMapFileSerializer.cs
- DataGridCommandEventArgs.cs
- ClientBuildManagerCallback.cs
- DocumentPageTextView.cs
- ConfigurationStrings.cs
- UTF32Encoding.cs
- BooleanAnimationUsingKeyFrames.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- ScrollPattern.cs
- GetLedgerEntryForRecipientRequest.cs
- SqlUtils.cs
- ScriptResourceInfo.cs
- DoubleAnimationUsingPath.cs
- IconEditor.cs
- _AutoWebProxyScriptWrapper.cs
- Encoder.cs
- PDBReader.cs
- ControlDesignerState.cs
- HtmlInputSubmit.cs
- SortKey.cs
- InputBinding.cs
- BamlTreeNode.cs
- ObjectItemCachedAssemblyLoader.cs
- SortQueryOperator.cs
- XComponentModel.cs
- IncrementalReadDecoders.cs
- ExpressionVisitorHelpers.cs
- TraceUtility.cs
- CodeTypeMemberCollection.cs
- BuildProvider.cs