• 《VC++深入详解》学习笔记 第十五章 多线程


    (一天两更,肝?)

    进程和程序:  进程是程序的对象

    进程组成:  内核对象:系统管理进程的地方

           地址空间:包含DLL和代码数据,进程本身不执行什么,代码的执行是线程,在进程构造的环境中。每个进程可以包含多线程,系统在进程中创建的

          第一个线程称之为主线程。

    进程地址空间:  对应32位系统而言,一个进程有4GB的虚拟地址空间,其中2GB为内核分区,剩余2GB中一部分作为NULL指针分区,该分区负责维护进程大部分数据

    线程的组成:  内核对象:系统管理线程地方

            线程栈:维护线程执行中函数参数和局部变量

    线程的创建:  系统创建线程内核对象(该对象不是线程本身,而是管理线程的较小的数据结构)>进程的地址空间中分配内存供线程栈使用>新线程能够轻易的访问进程内核对象,进程内存和该进程中其他线程的堆栈

          线程只有一个内核对象和一个栈,保留信息和需要内存少,线程的开销缘由小于进程,所有尽量采用多线程编程少创建进程。

    多线程运行方式:  时间片划分,给每个线程分配一定时间,循环执行

    创建线程:  

    HANDLE CreateThread(
    LPSECURITY_ATTRIBUTES    lpThreadAttributes,   
    DWORD    dwStackSize,    //线程初始栈大小
    LPTHREAD_START_ROUTINE    lpStartAddress,    //新线程起始地址
    LPVOID    lpParameter,    //传递参数
    DWORD    dwCreationFlags,    //线程创建标记
    LPDWORD    lpThreadId    //线程接收ID
    );

     互斥对象(mutex):  同时只有一个线程能够访问该对象,被访问时,对象处于未通知状态;未访问时,对象处于通知状态;

                创建互斥对象:CreateMutex(安全性,创建者是否访问,对象名)返回值为对象句柄

                GetLastError:对象曾创建,返回ERROR_ALREADY_EXISTS

                释放对象所有权:ReleaseMutex(句柄)

                获取对象所有权:WaitForSingleObject(句柄,等待时间(毫秒))返回值:对象有信号,等待超时无信号,对象所有者线程已结束,抢占所有权。

    应用程序只有一个实例:  通过在创建互斥对象识别是否曾创建来确定该对象是否的第二个对象         

                

  • 相关阅读:
    第14.15节 爬虫实战1:使用Python和selenium实现csdn博文点赞
    第14.14节 爬虫实战准备:csdn博文点赞过程http请求和响应信息分析
    第14.13节 BeautifulSoup的其他功能导览
    Mina源码阅读笔记(四)—Mina的连接IoConnector1
    H3C SecPath F100-C 防火墙配置说明
    基于数据仓库星形模式的广东省高速公路一张网资金结算情况分析系统
    祝贺自己的软件《万能数据库查询分析器》在中关村在线下载量超过10万次
    DB Query Analyzer has been downloaded more than 100,000 times
    图像处理程序框架—MFC相关知识点
    Graph Cuts学习笔记2014.5.16----1
  • 原文地址:https://www.cnblogs.com/sepmaple/p/9440887.html
Copyright © 2020-2023  润新知