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
- InternalsVisibleToAttribute.cs
- EventSchemaTraceListener.cs
- DataGridViewUtilities.cs
- SoapEnumAttribute.cs
- InstanceStore.cs
- RtfFormatStack.cs
- CalendarDay.cs
- ReadOnlyCollectionBase.cs
- UnhandledExceptionEventArgs.cs
- ProjectionCamera.cs
- MailHeaderInfo.cs
- WindowsSolidBrush.cs
- FilterRepeater.cs
- WindowsBrush.cs
- ThaiBuddhistCalendar.cs
- XmlAnyAttributeAttribute.cs
- DocumentViewer.cs
- CodeDomSerializationProvider.cs
- AesManaged.cs
- SimpleWebHandlerParser.cs
- ResourceExpressionBuilder.cs
- NamespaceMapping.cs
- CodeIterationStatement.cs
- PassportPrincipal.cs
- DownloadProgressEventArgs.cs
- TreeNode.cs
- DataGridViewCellStyle.cs
- SystemColors.cs
- NameValueSectionHandler.cs
- AsyncCompletedEventArgs.cs
- ReflectionHelper.cs
- HtmlInputImage.cs
- SocketAddress.cs
- QueryAccessibilityHelpEvent.cs
- StateRuntime.cs
- CrossContextChannel.cs
- TableRowCollection.cs
- DataGridItemCollection.cs
- WindowsPrincipal.cs
- BitmapSizeOptions.cs
- translator.cs
- UnionCqlBlock.cs
- LocalIdKeyIdentifierClause.cs
- Buffer.cs
- QilParameter.cs
- SourceFileBuildProvider.cs
- Repeater.cs
- SchemaImporterExtensionElement.cs
- TextFormatterImp.cs
- SpecialFolderEnumConverter.cs
- ComboBoxRenderer.cs
- InternalCache.cs
- RangeValueProviderWrapper.cs
- KnownTypeAttribute.cs
- XmlSchemaInferenceException.cs
- StateFinalizationActivity.cs
- XamlStream.cs
- DataService.cs
- DBBindings.cs
- WebBrowserHelper.cs
- DropSource.cs
- FunctionCommandText.cs
- updateconfighost.cs
- NotImplementedException.cs
- FontFaceLayoutInfo.cs
- FlowLayoutPanel.cs
- MediaPlayerState.cs
- NativeRecognizer.cs
- DrawListViewColumnHeaderEventArgs.cs
- FixedSOMElement.cs
- RuntimeArgumentHandle.cs
- BamlRecords.cs
- StoreUtilities.cs
- XmlCharType.cs
- SqlInternalConnectionTds.cs
- Geometry3D.cs
- base64Transforms.cs
- MsmqInputChannelBase.cs
- HandledMouseEvent.cs
- StrongNamePublicKeyBlob.cs
- IsolatedStorageFileStream.cs
- VersionPair.cs
- ProtocolViolationException.cs
- ReadOnlyHierarchicalDataSourceView.cs
- SqlProviderServices.cs
- SelectedDatesCollection.cs
- BuildResult.cs
- ButtonChrome.cs
- DeferredSelectedIndexReference.cs
- StrongName.cs
- WebUtil.cs
- Event.cs
- WorkflowDesigner.cs
- WebResourceAttribute.cs
- StorageComplexTypeMapping.cs
- PasswordBox.cs
- IpcChannel.cs
- KeyboardNavigation.cs
- DataTemplate.cs
- TransformConverter.cs