Code:
/ DotNET / DotNET / 8.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
- HttpProtocolReflector.cs
- Inline.cs
- RoleService.cs
- UiaCoreTypesApi.cs
- CategoryEditor.cs
- ListControl.cs
- GPRECT.cs
- TextPattern.cs
- BamlBinaryReader.cs
- ContextConfiguration.cs
- TabControlDesigner.cs
- Function.cs
- CachedBitmap.cs
- StatusBarDrawItemEvent.cs
- StylusPointDescription.cs
- PolygonHotSpot.cs
- XmlnsPrefixAttribute.cs
- ToolboxItemCollection.cs
- HostingEnvironmentSection.cs
- SettingsProperty.cs
- Operator.cs
- SmtpNegotiateAuthenticationModule.cs
- WsatConfiguration.cs
- BookmarkNameHelper.cs
- MimeAnyImporter.cs
- TrackingProfile.cs
- ConditionalWeakTable.cs
- BrowserPolicyValidator.cs
- XmlCharCheckingReader.cs
- BaseDataList.cs
- AddIn.cs
- SmtpNetworkElement.cs
- XamlVector3DCollectionSerializer.cs
- ProfileInfo.cs
- OdbcConnectionString.cs
- DocumentGridContextMenu.cs
- MethodAccessException.cs
- SchemaElementDecl.cs
- WindowsToolbar.cs
- GC.cs
- FileAuthorizationModule.cs
- NativeMethods.cs
- ObjectDataSourceView.cs
- ComboBoxAutomationPeer.cs
- MemoryFailPoint.cs
- ResolveCompletedEventArgs.cs
- RelationshipConverter.cs
- AssemblyBuilder.cs
- VirtualDirectoryMapping.cs
- MachineKeyConverter.cs
- KeyEventArgs.cs
- PrincipalPermission.cs
- ApplicationSecurityInfo.cs
- Decimal.cs
- SequentialUshortCollection.cs
- PersonalizableAttribute.cs
- GenericsInstances.cs
- AutomationTextAttribute.cs
- RuntimeConfig.cs
- SizeConverter.cs
- securitymgrsite.cs
- AsymmetricKeyExchangeDeformatter.cs
- SQLByteStorage.cs
- WindowsToolbarAsMenu.cs
- CodeTypeDelegate.cs
- CorrelationManager.cs
- PropertyStore.cs
- RelAssertionDirectKeyIdentifierClause.cs
- FontStyles.cs
- DbCommandTree.cs
- EncodingTable.cs
- CodeSubDirectory.cs
- XpsDocument.cs
- SqlMetaData.cs
- GroupedContextMenuStrip.cs
- NamedPipeProcessProtocolHandler.cs
- LayoutEditorPart.cs
- HebrewCalendar.cs
- PageStatePersister.cs
- ObjectAnimationBase.cs
- DependencyObjectPropertyDescriptor.cs
- RemotingService.cs
- WindowsFormsHostAutomationPeer.cs
- ADMembershipProvider.cs
- SettingsSavedEventArgs.cs
- BigInt.cs
- WindowsServiceElement.cs
- CustomWebEventKey.cs
- CollectionChangeEventArgs.cs
- PageCodeDomTreeGenerator.cs
- PriorityRange.cs
- CryptoSession.cs
- FtpRequestCacheValidator.cs
- InstanceStore.cs
- Grant.cs
- CompilerGlobalScopeAttribute.cs
- FileDataSourceCache.cs
- CodeAttributeDeclaration.cs
- Queue.cs
- QilSortKey.cs