Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
0.8
-
None
-
Hardware: Single-Core CPU,
System: CentOS system,
Coding Language: mono
-
Patch Available
Description
On a linux system with single cpu core, TThreadPoolServer(csharp) might throw an exception like "Error: could not SetMinThreads in ThreadPool".
According to SetMinThreads description in MSDN:
If you specify a negative number or a number larger than the maximum number of active thread pool threads (obtained using GetMaxThreads), SetMinThreads returns false and does not change either of the minimum values.
The default DEFAULT_MIN_THREADS value is 10, while GetMaxThreads obtains 100 and 4 on a single-cpu computer. This make SetMinThreads function failed.
The number obtained by GetMaxThreads is associated with the number of cpu core.
So I suggest to change the order of SetMinThreads and SetMaxThreads, like:
if (!ThreadPool.SetMaxThreads(maxThreadPoolThreads, maxThreadPoolThreads)) throw new Exception("Error: could not SetMaxThreads in ThreadPool"); if (!ThreadPool.SetMinThreads(minThreadPoolThreads, minThreadPoolThreads)) throw new Exception("Error: could not SetMinThreads in ThreadPool");