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
- StringFreezingAttribute.cs
- Application.cs
- IDReferencePropertyAttribute.cs
- MonitorWrapper.cs
- SQLBinary.cs
- DbParameterCollectionHelper.cs
- DataViewListener.cs
- DescendantOverDescendantQuery.cs
- ExpressionBuilderContext.cs
- ContentElement.cs
- AdCreatedEventArgs.cs
- PseudoWebRequest.cs
- Vars.cs
- IntSumAggregationOperator.cs
- ListItem.cs
- ManagedFilter.cs
- PageContentAsyncResult.cs
- TypeName.cs
- XpsSerializerFactory.cs
- HandlerFactoryCache.cs
- PublisherMembershipCondition.cs
- WaveHeader.cs
- CalendarBlackoutDatesCollection.cs
- CategoryEditor.cs
- ActiveXContainer.cs
- SiblingIterators.cs
- DbConnectionOptions.cs
- HtmlTableCell.cs
- SqlBuilder.cs
- ContentElement.cs
- WindowsTokenRoleProvider.cs
- ProxyWebPartConnectionCollection.cs
- ListView.cs
- ClientSponsor.cs
- StrokeCollectionDefaultValueFactory.cs
- ImageButton.cs
- HttpDebugHandler.cs
- ImagingCache.cs
- BindValidator.cs
- RemoveStoryboard.cs
- ArrayHelper.cs
- IntranetCredentialPolicy.cs
- ImageMap.cs
- FileRegion.cs
- NotFiniteNumberException.cs
- LinqDataSourceHelper.cs
- TableRowCollection.cs
- OleDbMetaDataFactory.cs
- NeutralResourcesLanguageAttribute.cs
- ArraySegment.cs
- SkipStoryboardToFill.cs
- CodeNamespaceCollection.cs
- ScriptHandlerFactory.cs
- StrongTypingException.cs
- View.cs
- ToolTip.cs
- StatementContext.cs
- WindowsFormsSynchronizationContext.cs
- Icon.cs
- AsymmetricAlgorithm.cs
- XmlName.cs
- ScriptDescriptor.cs
- CodeCompiler.cs
- AuthorizationRule.cs
- TemplateKeyConverter.cs
- InputElement.cs
- XamlVector3DCollectionSerializer.cs
- TdsParserSessionPool.cs
- CachedFontFace.cs
- StreamGeometry.cs
- FormViewInsertedEventArgs.cs
- TagPrefixCollection.cs
- ScriptingJsonSerializationSection.cs
- PostBackOptions.cs
- ParsedAttributeCollection.cs
- TextMetrics.cs
- TextFormatterHost.cs
- _NegotiateClient.cs
- SqlCacheDependency.cs
- UniqueCodeIdentifierScope.cs
- CompoundFileStorageReference.cs
- KoreanCalendar.cs
- MissingSatelliteAssemblyException.cs
- RangeValueProviderWrapper.cs
- EventsTab.cs
- MemoryPressure.cs
- Size3D.cs
- KnownTypesProvider.cs
- DbProviderFactories.cs
- EventDescriptor.cs
- ObsoleteAttribute.cs
- InputChannel.cs
- DesignerActionTextItem.cs
- StylusEventArgs.cs
- WebPartVerbsEventArgs.cs
- XmlReturnReader.cs
- PeerFlooder.cs
- MutexSecurity.cs
- EventToken.cs
- SecurityUniqueId.cs