美文网首页
线程(一)

线程(一)

作者: 啦啦哇哈哈 | 来源:发表于2018-10-09 21:16 被阅读0次

例1:从fork()看线程
fork()创建新进程的系统调用。定义一个变量Pid,存储进程号,然后做fork操作,子进程就产生了,继承了父进程的所有资源,代码,堆栈,打开文件等等。如果是父进程,fork返回了子进程的pid,如果是子进程,fork返回0,可以用这个返回值区分父子进程。

int main(){
    int pid = 0;
    
    printf("the parent is going to fork\n")
    if(pid = fork() != 0){
        printf("I am the father of %d\n", pid);
    }  else{
        printf("I am the child\n");
    }
}

这个例子,可以看到程序是静态的,但是进程执行代码过程中的轨迹是动态的,父子进程就有不同的结果,有跳转有判断。这样的动态跳转就给操作系统带来了麻烦。跳转判断的过程留下了线索,怎么样去准确的反映这个线索?这就是提出线程概念的意图之一。

PS:老师提的这个例子其实我没有看懂。。进程PCB里面不是有program counter?难道进程不能跟踪线索?这个问题先留着。

例2:单线程VS多线程
假设单线程模式,一个选课系统,1000个学生区分这些人那就要有1000个进程,这些进程的代码几乎是一样的,进程创建很消耗时间,那个数据结构也很大,那就要1000个PCB,有人问难道不能共享代码和数据?好,有可能共享一部分代码和数据,或许用不来那么多的空间。那调度时候Context Switch频繁切换,会有很大很大的开销,这有多难多恶心。。可想而知。

这也是提出线程概念的另一个意图。

定义来了!
在一个任务下面包含了若干个线程,这若干个线程共享了一个大任务的一些资源(代码、数据、文件等),每个线程有独立的资源(寄存器、栈、程序计数器等)。(是有层次的,一定要强调一个任务下面)

线程可以解决例子中的两个问题:

  • 每个线程都有自己的Program counter,所以可以跟踪不同线程的轨迹。
  • 另外线程还能共享那些公共资源,没有太多空间消耗。线程切换也不存在Context Switch的问题。

除了上面的两点,还有下面的优点:

  • 对多处理器或者多核(算数逻辑单元独立,共享了cache)系统,可以让每一个核去对应执行一个线程,而单线程进程只能运行在一个CPU(核)上,多线程在多CPU或多核系统中加强了并发功能。
  • 响应度高,多线程即使部分阻塞或者执行较冗长的操作,该程序仍然能继续执行。

相关文章

  • Java 多线程之线程的创建及其使用

    一、创建线程以及启动线程 二、停止线程 三、线程类中函数详解 一、创建线程以及启动线程 创建线程:Java中创建线...

  • 多线程介绍

    一、进程与线程 进程介绍 线程介绍 线程的串行 二、多线程 多线程介绍 多线程原理 多线程的优缺点 多线程优点: ...

  • 泥瓦匠聊并发编程基础篇:线程与多线程必知必会

    本文目录 线程与多线程 线程的运行与创建 线程的状态 1 线程与多线程 线程是什么?线程(Thread)是一个对象...

  • java多线程基础

    多线程 线程,进程,多线程 一、java线程 1. 线程状态 2. 线程方法 方法说明setPriority(in...

  • Python多线程

    目录:一、线程的创建二、多线程互斥锁三、线程间通信四、线程池 Python并发之多线程 一、线程的创建 单线程示例...

  • Kotlin线程(4)线程管理

    等待线程结束 (join)线程让步 (yield)线程停止 一、等待线程结束   当一个线程调用其它线程(t1)的...

  • 深入理解AsyncTask

    主线程和子线程 主线程是指进程所拥有的线程,在Java中默认一个进程只有一个线程,这个线程就是主线程。主线程主要用...

  • Springboot | 线程池的学习,多线程池配置示例

    一、线程和进程,线程的生命周期二、单线程和多线程三、线程池的概念四、线程池的使用五、多线程池配置示例 一、线程和进...

  • 线程、多线程和线程池 一

    1.开启线程的三种方式? 1.继承Thread类,并复写run方法,创建该类对象,调用start方法开启线程。2....

  • 一、线程中断、线程共享、线程封闭

    一、6中线程状态定义: java.lang.Thread.State New、Runnable、Blocked、W...

网友评论

      本文标题:线程(一)

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