zoukankan      html  css  js  c++  java
  • 多线程面试总结

    操作系统的设计,因此可以归结为三点:
    (1)以多进程形式,允许多个任务同时运行;
    (2)以多线程形式,允许单个任务分成不同的部分运行;
    (3)提供协调机制,一方面防止进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。
    2. 线程与进程的区别?
    程序: 完成某种功能的一段代码。静态概念。
    任务: 程序完成的一个活动。既可以是一个进程,也可以是一个线程。
    进程: 程序的一次执行过程。一个独立的进程在内存中有自己的数据空间和代码空间。它所拥有的数据变量属于它自己。
    线程: 线程是进程的一个执行序列。同一个进程创建的多个线程可以共享进程的一些资源,如全局变量,同时,多个线程可以有自己的栈空间,线程的局部变量只属于这个线程。
    线程可以有自己的堆栈和局部变量,但线程没有单独的地址空间,因此一个线程死掉就等于整个进程死掉,所以线程的健壮性不如进程。但进程切换时,系统开销大,因此
       资源利用率低。
    对于一些要求同时运行且要共享资源的并发操作,只能用线程,而不能用进程。
    总结:1. 一个线程只能同时属于一个进程,一个进程可以有多个线程,且至少有一个线程。
    2. 同一进程的所有线程共享进程的所有资源。有些资源的访问需要线程之间互斥访问。
    3. 真正在处理机上运行的是线程,而不是进程。
    4. 同步问题: 不同进程的线程之间利用消息通信的方式实现同步。
    线程与进程的区别?
    1、 线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。
    2、 一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。
    3、 系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。那就是说,出了CPU之外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。
    4、 与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少多了。
    5、 进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。
    多线程有几种实现方法,都是什么?
     1. 继承 Thread 类
      2. 实现 Runnable 接口再 new Thread(YourRunnableOjbect) 
    4. 多线程同步和互斥有几种实现方法,都是什么?
    线程间的同步方法大体可分为两类:用户模式和内核模式。顾名思义,内核模式就是指利用系统内核对象的单一性来进行同步,使用时需要切换内核态与用户态,而用户模式就是不需要切换到内核态,只在用户态完成操作。
    用户模式下的方法有:原子操作(例如一个单一的全局变量),临界区。内核模式下的方法有:事件,信号量,互斥量。
    5. 多线程同步和互斥有何异同,在什么情况下分别使用他们?举例说明。
    线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。
    线程互斥是指对于共享的进程系统资源,在各单个线程访问时的排它性。当有若干个线程都要使用某一共享资源时,任何时刻最多只允许一个线程去使用,其它要使用该资源的线程必须等待,直到占用资源者释放该资源。线程互斥可以看成是一种特殊的线程同步(下文统称为同步)。

    来自 <http://www.cnblogs.com/astwish/articles/3439308.html


    一个行者的旅途
  • 相关阅读:
    cocos2dx 历史版本下载问题
    C++ 类之间的互相调用
    什么内网和外网
    c++网络编程2:TCP连接概念及编程
    Texturepack、physicsEditor、spriteilluminator的安装包下载
    逃离地心——齿轮旋转
    Cocos2d-x v3.0物理系统 利用PhysicsEditor创建多边形
    c#发送Http请求方法汇总
    代码大全知识点
    .Net技术方向
  • 原文地址:https://www.cnblogs.com/xinzghewanfu/p/5904269.html
Copyright © 2011-2022 走看看