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
- Triangle.cs
- InvalidCastException.cs
- DbProviderFactory.cs
- LabelEditEvent.cs
- SeekableReadStream.cs
- DockPattern.cs
- ApplicationContext.cs
- XappLauncher.cs
- OdbcReferenceCollection.cs
- GestureRecognitionResult.cs
- PassportAuthenticationEventArgs.cs
- TextRunCacheImp.cs
- BookmarkUndoUnit.cs
- BoundColumn.cs
- ZipIOExtraFieldPaddingElement.cs
- CommandConverter.cs
- CrossSiteScriptingValidation.cs
- XmlParser.cs
- BindingOperations.cs
- XmlLinkedNode.cs
- PageCatalogPart.cs
- PreProcessInputEventArgs.cs
- ResourceWriter.cs
- DNS.cs
- ContractUtils.cs
- DesignerDataTable.cs
- PngBitmapDecoder.cs
- ZipQueryOperator.cs
- PrintDialog.cs
- SectionInformation.cs
- PlainXmlWriter.cs
- ErrorWrapper.cs
- ProviderConnectionPoint.cs
- InternalCache.cs
- SystemSounds.cs
- WindowsNonControl.cs
- HostedBindingBehavior.cs
- ItemsPanelTemplate.cs
- JsonServiceDocumentSerializer.cs
- HtmlEncodedRawTextWriter.cs
- MimeFormImporter.cs
- ChannelSettingsElement.cs
- datacache.cs
- Matrix.cs
- InputGestureCollection.cs
- ImageMap.cs
- TabPageDesigner.cs
- ErrorFormatter.cs
- AnnotationResourceChangedEventArgs.cs
- XsdDataContractExporter.cs
- SqlDeflator.cs
- DrawItemEvent.cs
- PersonalizationProviderCollection.cs
- WebPartDisplayModeEventArgs.cs
- WindowHideOrCloseTracker.cs
- BrushConverter.cs
- WebPartConnectionsCancelEventArgs.cs
- MarkerProperties.cs
- DataSourceCache.cs
- ButtonStandardAdapter.cs
- sqlser.cs
- Span.cs
- WebPartManager.cs
- Icon.cs
- DataGridViewDataConnection.cs
- OdbcErrorCollection.cs
- RuntimeEnvironment.cs
- EntityStoreSchemaFilterEntry.cs
- CallContext.cs
- OciHandle.cs
- OdbcParameter.cs
- ClientData.cs
- _HTTPDateParse.cs
- AsyncOperation.cs
- ReliableChannelFactory.cs
- ProfileSection.cs
- AssemblyNameProxy.cs
- ControlParser.cs
- MaskDescriptors.cs
- OpCodes.cs
- UrlAuthorizationModule.cs
- FormsIdentity.cs
- OleStrCAMarshaler.cs
- Rule.cs
- MainMenu.cs
- IntSecurity.cs
- ObjectListCommandCollection.cs
- ExceptionUtil.cs
- Style.cs
- SettingsPropertyValue.cs
- AutoGeneratedFieldProperties.cs
- SamlSerializer.cs
- CustomExpression.cs
- Decorator.cs
- PageHandlerFactory.cs
- CodeNamespaceImport.cs
- SrgsNameValueTag.cs
- SynchronizedDispatch.cs
- VisualBasicSettingsHandler.cs
- PenContexts.cs