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
- TrackingServices.cs
- DiscardableAttribute.cs
- Tablet.cs
- SplineKeyFrames.cs
- ExpandedWrapper.cs
- TreeView.cs
- NetNamedPipeSecurity.cs
- ProfileModule.cs
- DataViewSetting.cs
- String.cs
- StrokeRenderer.cs
- CodeGenerator.cs
- ColumnMapProcessor.cs
- EventBuilder.cs
- TableLayoutStyle.cs
- EncoderNLS.cs
- MemberRelationshipService.cs
- AmbientProperties.cs
- ObjectToIdCache.cs
- Graphics.cs
- TrackingLocationCollection.cs
- TransformProviderWrapper.cs
- StdValidatorsAndConverters.cs
- DbParameterHelper.cs
- HwndSourceKeyboardInputSite.cs
- SqlWriter.cs
- DbProviderSpecificTypePropertyAttribute.cs
- ReadContentAsBinaryHelper.cs
- DecoderNLS.cs
- XmlLanguageConverter.cs
- ExpressionList.cs
- RedirectionProxy.cs
- DefinitionUpdate.cs
- SystemIPGlobalStatistics.cs
- ToolboxItemAttribute.cs
- ReachVisualSerializerAsync.cs
- AssociationTypeEmitter.cs
- BasicHttpBindingElement.cs
- WindowsFormsDesignerOptionService.cs
- MimeMapping.cs
- ListViewTableRow.cs
- XmlToDatasetMap.cs
- DeviceContext2.cs
- XMLSyntaxException.cs
- LoginUtil.cs
- DataSourceSelectArguments.cs
- DrawingGroup.cs
- WebBrowserNavigatingEventHandler.cs
- TagElement.cs
- Int64AnimationBase.cs
- ExpressionBinding.cs
- PenCursorManager.cs
- TreeViewItemAutomationPeer.cs
- TransferMode.cs
- VirtualPathProvider.cs
- UserControlDesigner.cs
- sqlmetadatafactory.cs
- DBConnectionString.cs
- ConnectivityStatus.cs
- MostlySingletonList.cs
- SafeNativeMethods.cs
- MessageQueue.cs
- FullTextState.cs
- TrackingStringDictionary.cs
- DBConnection.cs
- Relationship.cs
- Pair.cs
- WebReferencesBuildProvider.cs
- DataIdProcessor.cs
- ResourceAssociationSetEnd.cs
- MessageBox.cs
- ThaiBuddhistCalendar.cs
- ContentPresenter.cs
- TextViewBase.cs
- QueryAccessibilityHelpEvent.cs
- UpdateCompiler.cs
- PropertyBuilder.cs
- NavigationWindowAutomationPeer.cs
- EntityContainerRelationshipSet.cs
- ExcCanonicalXml.cs
- EntityTypeEmitter.cs
- DiagnosticsConfiguration.cs
- BufferBuilder.cs
- ActiveXHost.cs
- InputScopeManager.cs
- DrawingVisual.cs
- ActivityDelegate.cs
- FixedDocument.cs
- DataGridViewImageCell.cs
- ZipIOLocalFileHeader.cs
- SettingsPropertyValue.cs
- Floater.cs
- TextContainerChangedEventArgs.cs
- ContextMenuStripActionList.cs
- TagElement.cs
- TypeBuilderInstantiation.cs
- PropertySet.cs
- TileBrush.cs
- QuaternionRotation3D.cs
- FixedPageStructure.cs