我有一个双核处理器,现在,我要编写一个垃圾邮件机器人程序,该程序将发送诸如“嘿,你好吗?”之类的垃圾邮件。
我的问题是,运行消息的5个线程或100个线程能够以最快的速度弹出这些消息的线程数量是多少? (当然,这些数字并不特殊,仅作为示例)。所有线程将以线程安全方式运行。
编辑:至于之前的否决票,我并不是真正在编写垃圾邮件程序,我只是以它为例说明了我的问题,对不起您的误解
最佳答案
理想的线程数取决于您的硬件(在本例中为双核处理器),以及这些线程在做什么。如果它们占用大量CPU,则每个内核多于1个线程可能会减慢速度。
如果线程执行一些IO,则通过添加线程,您将看到性能整体提高。收益递减的点完全取决于非CPU任务的性质以及特定的硬件。
要找到这一点,您将必须测试各种线程总数。
您可以设计系统以自调整使用中的线程数。我曾经设计一个在CPU总负载约为70%时运行最佳(总吞吐量最高)的系统。为了优化该值,我添加了线程(线程之间有延迟),直到CPU达到70%+/- 5%。如果它超过80%,我发信号通知一个或多个线程完成其当前工作并终止。如果它低于60%,我会逐渐添加线程。像魅力一样工作。