| 109 | |
| 110 | |
| 111 | uint GetNumberOfCPU() |
| 112 | { |
| 113 | #ifndef RAR_SMP |
| 114 | return 1; |
| 115 | #else |
| 116 | #ifdef _UNIX |
| 117 | #ifdef _SC_NPROCESSORS_ONLN |
| 118 | uint Count=(uint)sysconf(_SC_NPROCESSORS_ONLN); |
| 119 | return Count<1 ? 1:Count; |
| 120 | #elif defined(_APPLE) |
| 121 | uint Count; |
| 122 | size_t Size=sizeof(Count); |
| 123 | return sysctlbyname("hw.ncpu",&Count,&Size,NULL,0)==0 ? Count:1; |
| 124 | #endif |
| 125 | #else // !_UNIX |
| 126 | DWORD_PTR ProcessMask; |
| 127 | DWORD_PTR SystemMask; |
| 128 | |
| 129 | if (!GetProcessAffinityMask(GetCurrentProcess(),&ProcessMask,&SystemMask)) |
| 130 | return 1; |
| 131 | uint Count=0; |
| 132 | for (DWORD_PTR Mask=1;Mask!=0;Mask<<=1) |
| 133 | if ((ProcessMask & Mask)!=0) |
| 134 | Count++; |
| 135 | return Count<1 ? 1:Count; |
| 136 | #endif |
| 137 | |
| 138 | #endif // RAR_SMP |
| 139 | } |
| 140 | |
| 141 | |
| 142 | uint GetNumberOfThreads() |
no outgoing calls
no test coverage detected