线程池中的线程数
Number of threads in a thread pool
我有两个问题..
1.线程和线程池有什么区别?我的系统中可以有多个线程池(不是线程)吗?
2. 我一直在阅读线程池中线程的一般大小与处理器数量相同或比处理器多一个。我使用的是四核处理器,这意味着我可以在线程池中拥有 4 或 5 个线程。但是在任务管理器下我的系统显示超过 1000 个线程随时处于活动状态..??
- What is he difference between thread and thread pool?
一个线程是一个单一的执行流程。一个线程池就是一组这样的线程;通常线程池中的线程会无限期地保持活动状态(即直到程序关闭),以便在每个新的工作请求进入时,它都可以交给线程池中的下一个可用线程进行处理。 (这是有益的,因为只唤醒现有线程并交给它一些工作比每次有新工作请求时总是创建一个新线程,然后销毁线程更有效)
Can I have multiple thread pools (not threads) in my system.
是的。
- I have been reading that general size of a threads in a thread pool is to be same as the number of processors or one more than the
processor.
这是一个很好的启发式方法,但这不是必需的;您的线程池中可以包含任意数量的线程。人们建议这个数字的原因是,如果线程池中的线程数少于物理 CPU 内核,那么在重负载下,并非所有 CPU 内核都将被使用(例如,如果您有一个 3 线程池和 4 CPU 个核心,然后在重负载下你将有 3 个 CPU 个核心忙碌和 1 个 CPU 个核心 idle/wasted,你的程序将占用 ~完成工作的时间比池中有 4 个线程的时间长 25%)。另一方面,如果线程多于 CPU 个内核,那么在重负载下,"extra" 个线程最终只会分时共享一个 CPU 个内核,相互减慢速度而不是在工作完成率方面提供任何额外的好处。
However under task manager my system shows more than 1000 threads
active anytime..??
关于这 1000 个线程,需要注意的是,在任何给定时刻,其中可能有 99% 实际上都处于休眠状态。大多数线程并不是一直在工作;相反,他们一生中的大部分时间都在等待某个特定事件的发生,迅速处理它,然后继续睡觉,直到下一个事件出现让他们处理。这就是为什么您可以在少数 CPU 个内核上使用 1000 个线程而不会出现任何问题的原因。
我有两个问题.. 1.线程和线程池有什么区别?我的系统中可以有多个线程池(不是线程)吗? 2. 我一直在阅读线程池中线程的一般大小与处理器数量相同或比处理器多一个。我使用的是四核处理器,这意味着我可以在线程池中拥有 4 或 5 个线程。但是在任务管理器下我的系统显示超过 1000 个线程随时处于活动状态..??
- What is he difference between thread and thread pool?
一个线程是一个单一的执行流程。一个线程池就是一组这样的线程;通常线程池中的线程会无限期地保持活动状态(即直到程序关闭),以便在每个新的工作请求进入时,它都可以交给线程池中的下一个可用线程进行处理。 (这是有益的,因为只唤醒现有线程并交给它一些工作比每次有新工作请求时总是创建一个新线程,然后销毁线程更有效)
Can I have multiple thread pools (not threads) in my system.
是的。
- I have been reading that general size of a threads in a thread pool is to be same as the number of processors or one more than the processor.
这是一个很好的启发式方法,但这不是必需的;您的线程池中可以包含任意数量的线程。人们建议这个数字的原因是,如果线程池中的线程数少于物理 CPU 内核,那么在重负载下,并非所有 CPU 内核都将被使用(例如,如果您有一个 3 线程池和 4 CPU 个核心,然后在重负载下你将有 3 个 CPU 个核心忙碌和 1 个 CPU 个核心 idle/wasted,你的程序将占用 ~完成工作的时间比池中有 4 个线程的时间长 25%)。另一方面,如果线程多于 CPU 个内核,那么在重负载下,"extra" 个线程最终只会分时共享一个 CPU 个内核,相互减慢速度而不是在工作完成率方面提供任何额外的好处。
However under task manager my system shows more than 1000 threads active anytime..??
关于这 1000 个线程,需要注意的是,在任何给定时刻,其中可能有 99% 实际上都处于休眠状态。大多数线程并不是一直在工作;相反,他们一生中的大部分时间都在等待某个特定事件的发生,迅速处理它,然后继续睡觉,直到下一个事件出现让他们处理。这就是为什么您可以在少数 CPU 个内核上使用 1000 个线程而不会出现任何问题的原因。