zoukankan      html  css  js  c++  java
  • windows内核对象

    一、内核对象

      操作系统为了以记录相关信息的方式管理各种资源,在其内部生成数据块(可视为结构体变量)。当然,每种资源需要维护的信息不同,所以每种资源拥有的数据块格式也有差异。这类数据块称为“内核对象”。

      内核对象就是为了管理线程、文件等资源而由操作系统创建的数据块,其创建者和所有者均为操作系统。

      内核对象通过整数型“句柄”区分,句柄相当于linux的文件描述符。

      可以通过句柄区分内核对象,通过内核对象可以区分线程。句柄的整数值在不同进程中可能出现重复,但线程ID在跨进程范围内不会出现重复,线程ID用于区分操作系统创建的所有线程。

    二、内核对象的状态

       资源类型不同,内核对象也含有不同信息。其中,应用程序实现过程中需要特别关注的信息被赋予某种“状态”。例如,线程内核对象中需要重点关注线程是否已终止,所以终止状态又 称“signaled状态”,未终止状态称为“non-signaled状态”。

      WaitForSingleObject函数用于针对单个内核对象验证signaled状态。该函数由于发生事件(变为signaled状态)返回时,有时会把相应内核对象再次改为non-signaled状态。这种可以再次进入non-signaled状态的内核对象称为“auto-test模式”的内核对象,而不会自动跳转到non-signaled状态的内核对象称为“manual-reset模式”的内核对象。

      WaitForMultipleObjects函数可以验证多个内核对象状态。

  • 相关阅读:
    vim操作指南
    Linux的常用命令
    Maven的标准settings.xml文件
    常用的Docker镜像及处理命令
    Java新特性 5、6、7、8、9、10、11、12、13
    数据库的元数据抽取SQL
    元类metaclass
    MySQL视图,函数,触发器,存储过程
    ajax与后台交互案例
    python数据类型小测试
  • 原文地址:https://www.cnblogs.com/ACGame/p/10444810.html
Copyright © 2011-2022 走看看