In the screenshot below, you can see that the OS is reporting 2925 threads.
In my own programs, I set the number of threads per core to around 1:1 and that results in the fastest overall processing. This is because once context switching starts, the performance starts to degrade.
This wouldn't really work if the number of threads being executed is in the thousands as the number of context switches would make the extra threads I use a drop in the ocean.
Is the OS reporting something different then what I'm thinking of when I'm thinking of threads?