CPU的多核,和多线程编程有关系吗?多线程编程是以多核的CPU为基础的吗
多线程并不是建立在有多少个CPU的基础上进行工作,多线程主要是通过CPU的时间片技术实现,比如在1S的时间内,在第一个0,1S处理一个线程的
工作,然后会储存好当前线程的工作状态,在下一个0.1S处理另一个线程的工作,每个时间都只能处理一个线程,只不过CPU的切换速度非常的快,
我们察觉不到而已,这其实是一种伪并行,而多核的CPU则是说我们每个核都可以单独的处理一个线程,这样的话处理速度自然就比单核的来说要快了
多线程和多少个cpu不是有什么联系,就是单核cpu也一样能做多线程,那么cpu多了,可能就会把不同的任务分配到不同的cpu去执行,就是真正的并行,如果是单cpu就不存在并行
打个比喻:
假设1个CPU是一个人,
那么1个人一会喝水,一会又去打字。然后,喝水喝到一半,还没来得及咽下去,就伸手打一个字,还没打完,又停下来,咽口水下去。这就是多线程了。CPU切换速度快,看起来是一起运行的,实际上是不停 的切换。
多个cpu就相当于多个人,并行的话,打个比方,就像多个人一起去搬砖一样。
要想利用多个cpu工作,必须使用多线程,包括多个单线程的进程。
但是多线程未必能利用到多个cpu。
即便没有多cpu,一些程序仍然可以从多线程中获益,比如说,多线程下载,多线程可以隐藏单个线程的网络延迟,提高网络使用效率,加快下载,以及避免长时间计算或者等待造成界面挂起。
多线程并不是建立在有多少个CPU的基础上进行工作,多线程主要是通过CPU的时间片技术实现,比如在1S的时间内,在第一个0,1S处理一个线程的
工作,然后会储存好当前线程的工作状态,在下一个0.1S处理另一个线程的工作,每个时间都只能处理一个线程,只不过CPU的切换速度非常的快,
我们察觉不到而已,这其实是一种伪并行,而多核的CPU则是说我们每个核都可以单独的处理一个线程,这样的话处理速度自然就比单核的来说要快了
多核是cpu,操作系统来处理的。效果就是你的多线程不象单核是再一个CPU上,大家轮流调度
多核就可以让多个线程分配到不同CPU,这样可以提高并发,能力,性能也能提升h
多线程编程不一定以多核的CPU为基础,就是说一个任务分成多个子任务,即线程,是Cpu调度的单位,不涉及资源,因为资源已经进程诞生时分配好了。每个任务定时由一个CPU执行。CPU核多,相当于多CPU,可以执行多个子任务。无论多核还是单核,都涉及到资源同步的问题。时间片的概念,不要忘记。多线程的初衷就是打印时,还能干别的事,继续看网页,文书、看片子。玩过DOS的都知道,DOS5.0之前,一旦打印,就不要再干计算机了,喝杯茶去。就是因为没有多线程和多进程。