我对多线程有点困惑。实际上,我们创建了多个线程,用于将主进程分解为子进程,以实现响应性并消除等待时间。
但是在这种情况下,我必须使用多个线程并行执行相同的任务。
我的处理器可以并行执行4个线程,因此如果我创建更多4个线程(10个或更多),它会改善性能吗?当我把这个问题提交给我的同事时,他告诉我们什么都不会发生,我们已经在许多其他应用程序中执行许多线程,比如浏览器线程,内核线程等等,所以他告诉我为同一个任务创建多个线程。
但是,如果我创建超过4个将执行并行的线程,则不会创建更多的上下文切换并降低性能。
或者即使我们创建了多个并行执行的线程,它们将一个接一个地执行,因此性能将是相同的。
那么在上述情况下该怎么做才是正确的?
修改
是不是因为,我的硬件只能创建2个线程(双重)?
软件线程=一段代码
硬件线程=运行软件线程的核心(处理器)。
所以我的CPU只支持2个并发线程,所以如果我购买的是具有8个内核或12个内核的AMD CPU,我可以获得更高的性能吗?
答案 0 :(得分:1)
多任务处理非常复杂,性能提升通常很大程度上取决于问题本身:
基本上这意味着如果没有问题的确切定义(任务之间的依赖关系,数据的依赖关系,并行任务的数量......),很难说出你将获得多少性能通过使用多个线程(如果它真的值得)。
答案 1 :(得分:0)
http://en.wikipedia.org/wiki/Amdahl%27s_law
Amdahl简而言之,您从并行执行中获得的性能提升受到必须按顺序运行的代码的限制。
在不知道您的问题空间的情况下,您应该看一些常见的事情: