Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Util / SystemInfo.cs / 1305376 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EnumerableRowCollection.cs
- CellQuery.cs
- ClientOptions.cs
- DataServiceClientException.cs
- RectConverter.cs
- PageBreakRecord.cs
- StylusDownEventArgs.cs
- FixedSOMTable.cs
- OutputCacheSection.cs
- ListChangedEventArgs.cs
- ListDictionary.cs
- ListViewUpdatedEventArgs.cs
- BuildProvider.cs
- ClientFormsAuthenticationCredentials.cs
- Property.cs
- TextRangeEditLists.cs
- XmlNavigatorFilter.cs
- StreamGeometryContext.cs
- DataViewSetting.cs
- XmlDataContract.cs
- CodeTryCatchFinallyStatement.cs
- BaseCodePageEncoding.cs
- DataExpression.cs
- IntranetCredentialPolicy.cs
- CollaborationHelperFunctions.cs
- NamespaceInfo.cs
- ConfigurationPropertyCollection.cs
- FailedToStartupUIException.cs
- TCPClient.cs
- HyperlinkAutomationPeer.cs
- BitmapFrameEncode.cs
- MembershipValidatePasswordEventArgs.cs
- EDesignUtil.cs
- figurelength.cs
- AspNetHostingPermission.cs
- PartBasedPackageProperties.cs
- AddressingVersion.cs
- ScrollBarRenderer.cs
- ExceptionUtil.cs
- UTF8Encoding.cs
- ResourceLoader.cs
- StandardMenuStripVerb.cs
- WebPartDisplayMode.cs
- OutputCacheProfileCollection.cs
- ReaderWriterLockWrapper.cs
- MimeImporter.cs
- CompilerGeneratedAttribute.cs
- ServiceInfoCollection.cs
- CompositeFontInfo.cs
- LineInfo.cs
- MouseActionConverter.cs
- DataTableReader.cs
- XNodeNavigator.cs
- OpenFileDialog.cs
- AttachedAnnotationChangedEventArgs.cs
- SessionStateItemCollection.cs
- VSWCFServiceContractGenerator.cs
- EdgeModeValidation.cs
- ScriptServiceAttribute.cs
- MenuItem.cs
- Inflater.cs
- TaskHelper.cs
- WindowsFormsSectionHandler.cs
- MSG.cs
- ControlEvent.cs
- SecureStringHasher.cs
- PolicyUnit.cs
- ProfileServiceManager.cs
- QueryAccessibilityHelpEvent.cs
- C14NUtil.cs
- RoutedEvent.cs
- GroupQuery.cs
- RadioButtonStandardAdapter.cs
- LambdaCompiler.Statements.cs
- TreeNodeCollectionEditorDialog.cs
- DataBoundControl.cs
- PixelFormats.cs
- MemoryFailPoint.cs
- StreamGeometry.cs
- MultiView.cs
- XmlCustomFormatter.cs
- EUCJPEncoding.cs
- BaseUriHelper.cs
- HandlerMappingMemo.cs
- DataBinder.cs
- AutomationPeer.cs
- HttpServerProtocol.cs
- CustomErrorsSection.cs
- StructuredTypeEmitter.cs
- SoapAttributeOverrides.cs
- QilScopedVisitor.cs
- DataColumnMappingCollection.cs
- FixedMaxHeap.cs
- IPEndPointCollection.cs
- ExpressionLexer.cs
- DataServiceProviderMethods.cs
- TemplateControlParser.cs
- CngKey.cs
- DataKey.cs
- PolicyStatement.cs