其实,你把CPU的超线程技术和程序的多线程混淆了;
先说CPU的超线程:这个技术只有Inter的芯片才有,Intel的超线程技术可以把一个核心虚拟成两个线程,每个线程在系统看来就是一个核心,比如4核八线程,在设备管理器中看到的就是8个核心,从而可以执行更多的任务,而AMD的CPU,一个核心就只是一个线程;这是CPU的超线程技术;
再来说程序的多线程:
比如Java,通过继承或实现多线程,可以让JVM同时运行多个任务,从而同时解决多种任务需求;
然而,程序的多线程本质来说并不是同时运行的,而是CPU对每个线程进行快速切换,随机的分配资源给他们去运算,由于切换的速度非常之快,所以在人类看起来,多线程就是同时运行的的。
That's All
哦 那运行的效率也不会提高啊,
按照CPU都只在同一时间接受一个线程的理论来看
如果
一个函数里面有2个任务 A任务和B任务 AB各需要1秒 也就是执行完这个函数要2秒
如果我用多线程 它会不同的切换 唯一的好处是 B无需等A执行完了才执行 但是结果还是用了2秒啊
@狂扁小朋友: 哦 大神 我还想问如果一个核心处理一个线程 那是否意味着 我有4个核心的CPU 可以同时处理4个任务呢? 就不是CPU都只在同一时间接受一个线程了呢?
@狂扁小朋友: 好处就是A运行的同时, B也在运行,AB快速切换,这就是传说中的多任务。
@狂扁小朋友: 不是,要看你程序里启用了几个线程,每个线程执行不同的任务,比如360,你杀毒的时候也可以清理垃圾,还可以升级系统补丁,清理木马,清理启动项,这多个任务在你看来就是同时进行的,任务多少要看程序启用了多少线程。
反正一般地多线程运行会比较快。这么打比喻吧,假如一个线程1s内得到了0.01s的使用时间,如果有十个线程,每个线程也只是占有0.01s的时候,合在一起就是0.1s了,它占用cpu的时候多了,运行量就大了。
你不要这么厉害,软硬件通吃,这样谁敢请你,啥你都懂了。
你理解软件的多线程就是,我告诉管家(Windows)一堆事情,泡茶、烧开水、洗地板、擦窗户。
这时候管家就开始吩咐女佣干活,如果有4个女佣,和8个女佣,干活的速度肯定不一样的,
有的女佣可以一心两用,那就是Intel 发明的 Intel® Hyper-Threading Technology,
要不然,一个女佣干六件事,肯定是一会儿干这个一会儿干那个。(CPU时间切片)
你也可以只有两个女佣,但是一下吩咐28件事情(System.Threading.Thread)。
但是实际上如果你只是要知道C#的多线程,根本不用管有几个女佣的。
我其他的倒是不担心,就是担心你知识学这么多了,没几家公司能请得起来。
线程只是我们应用的概念而已,简单说其实是我们开发中用的一种表达和处理方式的术语而已,这个不同于CPU的多核和超线程概念