...?在单核的计算机上编程根本不需要使用多线程编程吗?
1个回答
展开全部
先表达观点,我认为此言论存在一定的道理,但略显偏执。
线程在实际中常见有几个作用:
1. 为了并行执行任务。某些任务在逻辑上需要并行执行,每个任务独立运行且仅在需要时相互通讯,它们都有得到 CPU 执行的机会,这时候可以使用线程。我们常常不在 GUI 线程中做过多的事情,而是在工作线程做消耗大量 CPU 的任务。
2. 为了充分利用 CPU。单线程的程序只能使用一个 CPU(核),为了充分利用 CPU 就需要使用多个线程工作在多个 CPU(核)上。Windows 上 IOCP 能够设置等待事件的线程数,其主要目的就出于此。
回到此言论。如果前提是单 CPU,使用多线程必然不存在充分利用 CPU 一说,反而会因为线程上下文切换带来额外的性能开销(同步也会带来额外开销)。因此在单 CPU 下不使用多线程用以提高程序性能一说是合理的。那一旦需要并行执行任务该怎么办?答案就是可以使用状态机,程序员可以通过自己手动调度 CPU 以确保各个任务均能合理的运行,这样反而取得了更好的性能。
再考虑复杂度,用多线程的做法相比来说更加直观,不过使用状态机能够避免线程同步相关问题。
一般来说一个程序如果能够因为增加 CPU 来提高性能是件好事。
线程在实际中常见有几个作用:
1. 为了并行执行任务。某些任务在逻辑上需要并行执行,每个任务独立运行且仅在需要时相互通讯,它们都有得到 CPU 执行的机会,这时候可以使用线程。我们常常不在 GUI 线程中做过多的事情,而是在工作线程做消耗大量 CPU 的任务。
2. 为了充分利用 CPU。单线程的程序只能使用一个 CPU(核),为了充分利用 CPU 就需要使用多个线程工作在多个 CPU(核)上。Windows 上 IOCP 能够设置等待事件的线程数,其主要目的就出于此。
回到此言论。如果前提是单 CPU,使用多线程必然不存在充分利用 CPU 一说,反而会因为线程上下文切换带来额外的性能开销(同步也会带来额外开销)。因此在单 CPU 下不使用多线程用以提高程序性能一说是合理的。那一旦需要并行执行任务该怎么办?答案就是可以使用状态机,程序员可以通过自己手动调度 CPU 以确保各个任务均能合理的运行,这样反而取得了更好的性能。
再考虑复杂度,用多线程的做法相比来说更加直观,不过使用状态机能够避免线程同步相关问题。
一般来说一个程序如果能够因为增加 CPU 来提高性能是件好事。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询