zoukankan      html  css  js  c++  java
  • 第九章 线程与内核对象的同步(4)

    四、信标内核对象

    信标内核对象用于资源进行计数。包含:引用计数、最大资源数量(用于标识信标能够控制的资源的最大数量)、当期资源数量(用于标识当前可以使用的资源的数量)。

    信标的使用规则:当前资源数量大于0,则发出信标信号。0<=前资源数量<=最大资源数量

    1、创建信标内核对象

    HANDLE CreateSemaphore(PSECURITY_ATTRIBUTE psa, //安全属性

    LONG lInitialCount, //资源初始值(即可供使用的资源数)

    LONG lMaximumCount, //最大资源数量

    PCTSTR pszName) //命名

    2、其它线程打开现有信标

    HANDLE OpenSemaphore(DWORD fdwAccess, BOOL bInheritHandle, PCTSTR pszName)

    对信标的当前资源数量进行递增:

    BOOL ReleaseSemaphore(HANDLE hsem, LONG lReleaseCountPLONG plPreviousCount)

    信标的测试和设置操作是按原子方式进行的。当向信标申请一个资源时,操作系统检查是否有这个资源可供使用,同时将可用资源的数量递减(不让另一个线程干扰)。只有当资源数量递减后,系统才允许另一个线程申请对资源的访问权。如果该等待函数确定信标的当前资源数量是0(信标没有发出通知信号) 系统就让调用函数进入等待状态。当另一个线程将对信标的当前资源数量进行递增时,系统会记住该等待线程(或多个线程) ,并允许它变为可调度状态(相应地递减它的当前资源数量)。

  • 相关阅读:
    第5周作业
    第四周JAVA作业
    第三周JAVA学习
    第二周JAVA学习日志
    有关JAVA学习
    Swift 页面跳转
    Swift 登录判断
    单元测试学习
    WCF学习心得
    初次使用Oracle
  • 原文地址:https://www.cnblogs.com/dyufei/p/2573983.html
Copyright © 2011-2022 走看看