• 多线程编程的总结和范例


    本文内容主要从http://blog.csdn.net/column/details/killthreadseries.html转载而来,作为学习并整理自己的一些想法。

    一.概念性问答题

    1. 线程的基本概念、线程的基本状态及状态之间的关系?

    线程是进程中的一个实体,是被系统独立调度和执行的基本单位。

    线程,有时称为轻量级进程,是CPU使用的基本单元;它由线程ID、程序计数器、寄存器集合和堆栈组成。它与属于同一进程的其他线程共享其代码段、数据段和其他操作系统资源(如打开文件和信号)。

    线程有四种状态:新生状态、可运行状态、被阻塞状态、死亡状态。

     

          2.线程与进程的区别?

    (1) 线程是进程的一部分,所以线程有的时候被称为是轻权进程或者轻量级进程。
    (2) 一个没有线程的进程是可以被看作单线程的,如果一个进程内拥有多个进程,进程的执行过程不是一条线(线程)的,而是多条线(线程)共同完成的。
    (3) 系统在运行的时候会为每个进程分配不同的内存区域,但是不会为线程分配内存(线程所使用的资源是它所属的进程的资源),线程组只能共享资源。那就是说,除了CPU之外(线程在运行的时候要占用CPU资源),计算机内部的软硬件资源的分配与线程无关,线程只能共享它所属进程的资源。
    (4) 与进程的控制表PCB相似,线程也有自己的控制表TCB,但是TCB中所保存的线程状态比PCB表中少。
    (5) 进程是系统所有资源分配时候的一个基本单位,拥有一个完整的虚拟空间地址,并不依赖线程而独立存在。

     

    3.多线程有几种实现方法,都是什么?

    (1)继承 Thread 类
    (2)实现 Runnable 接口再 new Thread(YourRunnableOjbect) 

     

    4.多线程同步和互斥有几种实现方法,都是什么?

    (1)Critical Sections[关键区域、临界区域]

    Critical Sections并不是核心对象,存在于进程的内部空间中。使用时将一个类型为CRITICAL_SECTION的局部变量初始化即可。

    CRITICAL_SECTION qCriticalSection;
    
    void CreateDeletCriticalSection()
    {
        InitializeCriticalSection(&qCriticalSection);
        //do something here
        DeleteCriticalSection(&qCriticalSection);
    }

    //结合win32多线程编程学习中,待有收获继续更新

  • 相关阅读:
    URLLoader和Loader的区别
    linux的文件permission需要设置,否则会使用as3的urlrequest失败
    基于单个xml的数据库
    require_once()
    AS3里只能让动画听下来,不能让声音停下来的问题
    AS3的百条常用知识收藏
    as3读取xml
    21个营销机构网站设计案例
    Web设计者和开发者必备的27个Chrome插件
    DEDE模块MVC框架基本说明,织梦CMSv5.7MVC开发框架
  • 原文地址:https://www.cnblogs.com/jason1990/p/4680224.html
Copyright © 2020-2023  润新知