zoukankan      html  css  js  c++  java
  • 关于多线程简单原理

    相信大家经常听说 进程和线程 ,当然这东西出现必然有他的用处

    什么是进程?

    图书上就是进程,你会发现我的电脑运行多个进程

    对于以前的单核电脑来说(它在某一时刻只能执行一个进程,为什么我们既能听歌,又能看电影呢,那是因为cpu在飞快的切换!)

    那么对于多核当然是可以再同一时刻运行多个进程了

    上面说了进程,还的补充一点,进程间的内存是相互独立的!

    下面说下线程:

    线程是进程的最少执行单元,这话说的有点专业,还是上个简单的图

    说了这么多看代码!

     class Program
        {
            
            static void Main(string[] args)
            {
    
                f1();
            }
            static void f1()
            {
                f2();
            }
            static void f2()
            {
                f3();
            }
            static void f3()
            {
                Console.WriteLine("M3..........");
            }
        }  
    }
    //这段代码明显是在一个单线程里面完成的!

    下面看一个图更能说明问题

    下面看一个多线程的执行代码:

      class Program
        {
            
            static void Main(string[] args)
            {
                //创建线程
                Thread thread = new Thread(run); //run 方法在 t线程中运行
                thread.Start();//这段代码执行瞬间结束 告诉系统分配新的栈内存给t线程
                
                //这段代码在主线程
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine("main--->"+i);
                }
                //有了多线程 main方法结束只是主线程中没有方法栈帧
            }
    
            static void run()
            {
                for (int i = 0; i < 100; i++)
                {
                    Console.WriteLine("run"+i);
                }
            }
    }
    下面看一下执行结果! 截图一部分,后面也是输出

    从图可以看出 它并不是一直连续输出的,而main方法里的for结束后还在执行
    可能你会想到,是创建了线程的效果,为什么会产生这种效果呢?
    看下面图:


     

    以上是本人在工作,学习之余的一点总结,线程原理调用主要体现在这幅图里(开辟了新的线程栈内存!)

    当然还有很多不足,勿ping 缺点欢迎指出!

  • 相关阅读:
    redis入门
    elementui入门
    1387:搭配购买(buy)
    P1536 村村通
    1388:家谱(gen)
    1389:亲戚
    1385:团伙(group)
    P1305 新二叉树
    P5076 【深基16.例7】普通二叉树(简化版)
    二叉搜索树(BST)模版
  • 原文地址:https://www.cnblogs.com/yzenet/p/3070239.html
Copyright © 2011-2022 走看看