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函数可以验证多个内核对象状态。

  • 相关阅读:
    Linux下如何查看版本信息
    java单利模式设计
    MIT 2012 分布式课程基础源码解析-底层通讯实现
    MIT 2012分布式课程基础源码解析-事件管理封装
    MIT 2012分布式课程基础源码解析-线程池实现
    MIT 2012分布式课程基础源码解析一-源码概述
    Leetcode按Tag刷题
    网页搜集系统
    c/c++中的各种字符串转换
    gentoo装X服务器时显卡选择
  • 原文地址:https://www.cnblogs.com/ACGame/p/10444810.html
Copyright © 2011-2022 走看看