Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// 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
- MultiView.cs
- ToolStripItemTextRenderEventArgs.cs
- ConnectorEditor.cs
- parserscommon.cs
- UserControl.cs
- FunctionDetailsReader.cs
- AssociationEndMember.cs
- HttpWebRequestElement.cs
- SessionIDManager.cs
- ElementAction.cs
- BitmapEffectCollection.cs
- EntityCommandCompilationException.cs
- CreateInstanceBinder.cs
- Triplet.cs
- AvtEvent.cs
- DateTimeOffsetAdapter.cs
- PropertyInformationCollection.cs
- HitTestResult.cs
- Lease.cs
- CodeCommentStatementCollection.cs
- SspiSecurityToken.cs
- SingleAnimationUsingKeyFrames.cs
- TabControlAutomationPeer.cs
- OneOf.cs
- SerializationException.cs
- XAMLParseException.cs
- HtmlContainerControl.cs
- HttpException.cs
- InheritanceRules.cs
- configsystem.cs
- ProcessHostConfigUtils.cs
- WebUtil.cs
- DescendantQuery.cs
- HtmlElementCollection.cs
- DependentTransaction.cs
- BufferBuilder.cs
- UpDownBase.cs
- Tuple.cs
- XmlQualifiedNameTest.cs
- FirstMatchCodeGroup.cs
- AuthorizationContext.cs
- BindingContext.cs
- AssociationSetMetadata.cs
- TypefaceMetricsCache.cs
- TextBreakpoint.cs
- JoinTreeNode.cs
- DoubleAnimationBase.cs
- KeyboardNavigation.cs
- TextServicesContext.cs
- FileReader.cs
- PhonemeConverter.cs
- KerberosTicketHashIdentifierClause.cs
- ContainerVisual.cs
- StandardCommandToolStripMenuItem.cs
- BitVec.cs
- Deflater.cs
- StatusBarItem.cs
- HttpListener.cs
- IdnMapping.cs
- WebPartConnectionsCloseVerb.cs
- BamlRecords.cs
- PathGradientBrush.cs
- Geometry.cs
- HebrewCalendar.cs
- RequestCacheManager.cs
- Accessible.cs
- StackOverflowException.cs
- SchemaImporter.cs
- HttpInputStream.cs
- SingleAnimation.cs
- DesignerActionItemCollection.cs
- DataGridDetailsPresenterAutomationPeer.cs
- ColorMatrix.cs
- xml.cs
- ListenerPerfCounters.cs
- AuthenticationModeHelper.cs
- HtmlControl.cs
- MailAddress.cs
- pingexception.cs
- TraceLog.cs
- PanelStyle.cs
- GridViewRowEventArgs.cs
- ExpressionList.cs
- HtmlWindowCollection.cs
- RegexStringValidatorAttribute.cs
- ParentQuery.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- PersianCalendar.cs
- NativeObjectSecurity.cs
- AssociationSetMetadata.cs
- AsyncOperation.cs
- CqlLexerHelpers.cs
- FrameworkRichTextComposition.cs
- MessageQueuePermissionAttribute.cs
- OdbcDataReader.cs
- RepeaterItemCollection.cs
- PngBitmapEncoder.cs
- SqlClientFactory.cs
- AttributeQuery.cs
- Models.cs