美文网首页.NET多线程
.NET多线程(一)基本认识

.NET多线程(一)基本认识

作者: 万州大牛 | 来源:发表于2017-01-20 23:53 被阅读0次

    本节主要内容


    线程定义


    为什么使用多线程

    例 1
    界面上点击某个按钮后,需要执行一个非常耗时的操作,如果不使用多线程,就只能傻等操作返回。
    使用多线程,点击按钮之后,开辟1个新线程后台去执行这个耗时操作,前台界面继续执行其他菜单目录,录入数据等。

    例 2
    有个操作,1个线程需要20分钟完成,现在的多核cpu,可以真正同一时刻运行多个线程。
    假设是双核cpu,同一时刻运行2个线程,操作就只需要10分钟可以完成。


    多线程优点

    (1)提高应用程序执行效率。【例1】
    (2)提高cpu利用率。【例2】

    多线程缺点

    (1)占用内存,耗费cpu时间进行跟踪。
    (2)共享资源访问相互影响,程式代码控制难度大。

    问自己
    新开辟的线程,肯定需要内存吧?
    多个线程之间需要切换吧?切换需要占用cpu来计算吧?
    多个线程的执行顺序,是无法确定的,当他们都需要访问相同的变量、文件时,需要对这个变量、文件做同步处理吧?


    线程的数量

    理想的,线程数量 = cpu核心数量
    

    (1)超线程
    利用硬件指令,把1个物理cpu核心内部的2个逻辑内核,模拟成2个物理核心。
    通俗点就是1个cpu变2个cpu了,这时候,同一时刻,就可以2个线程真正的同时运行。

    (2)多核处理器
    就是cpu本身,就有2个或多个物理核心(比如:双核,四核),硬件本身就是可以同一时刻跑2个或多个线程。

    同一时刻,1个cpu核心只会让1个线程使用。如果有多个线程,那肯定需要切换,这个切换也是必要的,不然就会导致傻等的问题。这里,我们只要明白,一个时刻,1个cpu核心,只会让1个线程使用。


    线程的执行顺序

    多个线程,执行顺序,是无法确定的。
    

    这个问题
    主要是操作系统Windows是抢占式管理,谁抢到cpu,cpu就帮你干活。
    不过cpu计算非常的快,这次没抢到cpu,那就等下次呗,操作系统Windows也不会让线程饿死的。


    理解同一时刻

    1个cpu核心,同一时刻,只会有一个线程运行。多核心cpu,超线程,同一时刻,可以真正同时运行多个线程。

    我们通常认为的电脑同时运行多个程序,同时执行多个任务。
    这个【同时】并不是真正意义的【同一时刻】。
    多个程序,多个任务是否同一时刻运行,要看硬件cpu的处理能力。
    cpu计算非常的快,多个线程轮询cpu执行各自的操作。

    线程切换频率很快,我们的感觉是多个线程同时运行。
    要想多个线程【同一时刻】运行,那就需要多个cpu核心。
    比如,采用超线程,多核心处理器,同一时刻可以真正运行,2个线程,8个线程,16个线程等。


    以上内容,仅仅代表个人理解,以及参考书资料的观点。
    如果有错误,请及时指出,不要让错误的观点误导更多的人,感谢!

    相关文章

      网友评论

        本文标题:.NET多线程(一)基本认识

        本文链接:https://www.haomeiwen.com/subject/hqjgbttx.html