深入多线程

由于真的更加深入的话,要涉及到很多底层的知识,所以我就浅谈一些,其他的,大家需要了解的就拓展的找一找,看看吧!

或许在看这篇文章的时候,找一些其他的有各种举例的文章一起进行,会有更好的效果.

当然,如果有认为我说的有问题的也欢迎指出,毕竟知识是需要交流的,也需要相互学习的,那么---开始吧!骂人


多线程


          进程: 可以理解为一个正在运行中的应用程序(若一个程序没有运行,那它则不称为进程)
  
  线程: 可以理解为一个正在运行中的应用程序的子程序
  
  多线程:  一般指多个线程同时进行(在以前的单核计算机中通过时间片的切换,来达到同时进行的效果;现在到了多核计算机
            的时代,在某种情况下来说,可以看做是真的同步进行的!)(单核指的是只有一个CPU,多核指有多个CPU)

   ...一个cpu在进行数据操作的时候,是根据它里面的寄存器来判断所读取的数据是纯粹的数据还是指令(程序).以8086CPU为例,CPU里面有CS段寄存器和IP,以及DS段寄存器,8086CPU是通过地址加法器达到20位寻址操作的,其被CPU中的CS和IP合成后的地址所指的数据,是指令,读取后的数据(指令)进入指令缓冲器...
 
通过这些都是为为了说明,一个CPU在一刻(一个时间点),只能执行一条汇编指令(汇编指令即是机器码的指令集),其内部通过一系列的运算,处理和操作,从而控制整个计算机...(具体的这些更深化的实现细节是硬件设计方面需要考虑的,当然其内部也是极其复杂的,高低电平等..涉及到很多问题,不做深入研究)...
计算机硬件,比如说显卡,键盘..等,在生产的时候,其内部就已经嵌进去一些机器指令集,也就是汇编指令.它们也有自己的运算处理器和存储器,当然,这些指令就是写在ROM(只读存储器)中的(这些存储器和运算处理器可以看成全部都集中在主板上)..
 
 
在单核计算机中,多线程可以理解为,在一个进程(大程序)中,有多个线程(小程序). 在一个线程里面有多行代码,而CPU在运行若干行代码后会突然将代码的执行权收回(其实就是CS和IP指针发生改变),然后随机分配给这个进程中任意一个线程,或许又是
这个线程,或许是其他线程.如此,下一个线程运行几行代码后,CPU又会重新收回代码执行权(或者交回执行权更合理),然后再随机分配,这样,循环往复,直到整个进程结束! (由于CPU的运行速度特别特别快,所以我们又可以看做这多个线程是同时进行的),这是单核 计算机中的多线程操作.
 
 
在多核计算机中(也就是一个计算机有多个CPU),不像在单核计算机中那样,需要一个线程的中断,来执行其它线程,而是一个CPU在执行 这个线程的时候,还有其它CPU在执行另一个线程,这样就几乎达到了多线程同时进行的操作!(一个CPU在一个时间点只能执行一条指令, 那多个CPU的话,每个CPU执行一个,多个CPU就可以在同一时间点执行多条指令了,但是在一个线程中,程序是顺序执行的,不可能一个CPU 执行上一条指令,另一个CPU执行这条指令,又有一个CPU执行下一条指令,这样是不可能的. 不过,要是不是同一个线程,那就是可以的,也就是说不是一个子程序,每个子程序它都是独立的,它的执行与大程序有关联而又没有关联).

猜你喜欢

转载自blog.csdn.net/qq_28305299/article/details/80041626