开发中线程数量设计问题
多对应用程序的性能提升越大,什么情况下设计什么样的线程模型。 并发与并行 在具体说多线程并发模型设计之前,我们先来简单澄清两个概念,并发(Concurrency)和并行(Parallel), 它们是两个容易混淆的概念,它们的基础都是多线程,而并行是指多个进程或线程之间在运行时同一时间里并行的执行。 而并发则是多个线程一起共同去完成某一项任务。可以在单核处理器上分时运行实现,也可以在多核处理器上并行运行实现。 所以说并发偏重于是编程级别的概念,而并行则多指运行方式的概念。并行可以是进程级别上,多个进程同时运行,也可以是线程级别的多个独立线程的并行运行。强调的是同一时间上的同时发生。 我们通常所说的并发编程,实质就是通过多个线程来分解要执行的任务,使其成为多个可独立执行的小任务,做到可以在单核上分时执行,也可以在多核上并行执行。从而缩短总任务的处理时间,从而提高应用程序的性能。 多线程并发编程模型 在编程领域里,并发编程设计其实是跟顺序同步编程或者串行化编程设计相对的。 串行化编程是将任务排队,针对的运行它的目标处理器只有一个,而且数单线程处理的。要提高这类应用程序的性能,我们只能通过提高该该处理器的执行效率来完成,但是它的提升是有限的,毕竟单核的处理能力是有上限的。 当我们的计算机进入多内核时代后,串行化编程所使用的单线程模型是无法使用多内核的,为此我们将应用程序的执行任务分解成可独立执行的小任务,交给多个线程,让它们在多个内核上并行执行。 多个处理器或者内核并行的执行多个线程,能够很好发挥并发编程模型的威力,缩短应用代码的执行时间。 这就是为什么我们进入多处理器或者多内核计算机时代后,多线程编程成为提高应用程序的性能的一个重要的选项。 因为这种设计能够给我们带来极大的应用程序性能提高,同时还能增强我们应用程序的响应性。 当然,在单核时代并发编程模型也能够在一定程度上提高应用程序效率,因为并发编程模型会将一个大的任务分解成由多个线程负责的众多小任务,在一个单核处理器上借助处理器的分时处理机制来执行,从而有效的利用了任务执行过程中出现的等待时间。
多线程应用程序分类 (编辑:衡水站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |