首页 > 其他分享 >Semaphore

Semaphore

时间:2023-02-26 13:22:10浏览次数:22  
标签:INFO 函数 SYSTEM 信号量 Semaphore DWORD NULL

(一)SYSTEM_INFO

SYSTEM_INFO,Win32 API函数GetSystemInfo所使用的结构体。

1.说明

SYSTEM_INFO结构体包含了当前计算机的信息。这个信息包括计算机的体系结构、中央处理器的类型、系统中中央处理器的数量、页面的大小以及其他信息。

2.结构原型

  typedef struct _SYSTEM_INFO {
    __C89_NAMELESS union {
      DWORD dwOemId;    //过时已废弃
      __C89_NAMELESS struct {
    WORD wProcessorArchitecture;    //处理器架构
    WORD wReserved;
      } DUMMYSTRUCTNAME;
    } DUMMYUNIONNAME;
    DWORD dwPageSize;   //指定页面的大小和页面保护和委托的颗粒。
    LPVOID lpMinimumApplicationAddress;    //应用程序最小地址
    LPVOID lpMaximumApplicationAddress;    //应用程序最大地址
    DWORD_PTR dwActiveProcessorMask;    //处理器掩码
    DWORD dwNumberOfProcessors;    //处理器数量
    DWORD dwProcessorType;    //处理器类型
    DWORD dwAllocationGranularity;    //虚拟内存分配粒度
    WORD wProcessorLevel;    //处理器级别
    WORD wProcessorRevision;    //处理器版本
  } SYSTEM_INFO, *LPSYSTEM_INFO;

3.代码示例

void CTestDlg::GetSysInfo()
{
 SYSTEM_INFO  sysInfo;
 GetSystemInfo(&sysInfo);
}

GetSystemInfo函数用于获取当前系统的信息

(二)CreateSemaphore

1.说明

CreateSemaphore 是创建信号量

2.函数原型

#define CreateSemaphore __MINGW_NAME_AW(CreateSemaphore)
  WINBASEAPI HANDLE WINAPI CreateSemaphoreW (
LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, 
LONG lInitialCount, 
LONG lMaximumCount, 
LPCWSTR lpName);

lpSemaphoreAttributes 是信号量的安全属性。

指向SECURITY_ATTRIBUTES结构的指针。如果此参数为NULL,则子进程无法继承句柄。

lInitialCount 是初始化的信号量。

信号量对象的初始计数。该值必须大于或等于零且小于或等于lMaximumCount。信号量的状态在其计数大于零时发出信号,在信号为零时发出信号。只要wait函数释放等待信号量的线程,计数就会减1。通过调用ReleaseSemaphore函数将计数增加指定的量。

lMaximumCount 是允许信号量增加到最大值。

信号量对象的最大计数。该值必须大于零。

lpName 是信号量的名称。

信号量对象的名称。名称仅限于MAX_PATH个字符。名称比较区分大小写。

如果lpName为NULL,则创建没有名称的信号量对象。

返回值

如果函数成功,则返回值是信号量对象的句柄。如果在函数调用之前存在命名的信号量对象,则该函数返回现有对象的句柄,GetLastError返回ERROR_ALREADY_EXISTS。

如果函数失败,则返回值为NULL。要获取扩展错误信息,请调用GetLastError。

3.代码示例

m_hSemaphore = ::CreateSemaphore(NULL, lInitialCount, lMaximumCount, NULL);
    
if (m_hSemaphore == NULL) // 如果函数失败,则返回值为NULL。
{
       return false;
}

 

标签:INFO,函数,SYSTEM,信号量,Semaphore,DWORD,NULL
From: https://www.cnblogs.com/imreW/p/17156531.html

相关文章

  • Semaphore源码解析
    Semaphore源码解析描述:一个计数信号量。从概念上讲,信号量维护一组许可。每个acquire()方法在必要时阻塞,直到获得许可,然后才能使用它。每次release()释放一个许可,潜在......
  • Java并发编程——Semaphore
    一、SemaphoreSemaphore是一种在多线程环境下使用的设施,该设施负责协调各个线程,以保证它们能够正确、合理的使用公共资源的设施,也是操作系统中用于控制进程同步互斥的量。S......
  • 【高并发】AQS中的CountDownLatch、Semaphore与CyclicBarrier用法总结
    CountDownLatch概述同步辅助类,通过它可以阻塞当前线程。也就是说,能够实现一个线程或者多个线程一直等待,直到其他线程执行的操作完成。使用一个给定的计数器进行初始化,该......
  • Linux 通过信号量semaphore实现生产者消费者模型
    #include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<semaphore.h>#include<pthread.h>#defineN5voidsys_err(constchar*msg){}//定......
  • Using Semaphores in Delphi, Part 2: The Connection Pool
    Abstract:Semaphoresareusedtocoordinatemultiplethreadsandprocesses.Thatsemaphoresprovidemultiplethreadswithsimultaneousaccesstoasharedresou......
  • Java使用Semaphore对单接口进行限流
    java使用Semaphore对单接口进行限流目录一、实战说明1.1效果说明1.2核心知识点二、?环境搭建三、限流演示3.1并发请求工具3.2效果示例图一、实战说明1.1效果说明......
  • 【Kotlin 协程】协程并发安全问题 ( 使用 Atomic 并发安全类型 | 使用 Channel 通道 |
    文章目录​​一、协程不安全数据访问​​​​二、使用Atomic并发安全类型​​​​三、使用Channel通道​​​​四、使用Mutext轻量级锁​​​​五、使用Semaphore轻......
  • Java同步器之辅助类Semaphore
    一、概述Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。二、使用案例可以用于做流量控制,特别是公用资源有限的应......
  • Semaphore简单使用
    Semaphore可以限制单个时间内允许活跃的线程数//同一时间段允许3个线程活跃,非公平的模式Semaphoresemaphore=newSemaphore(3,false);//这里表示拿到一份资......
  • Semaphore信号量源码解析(基于jdk11)
    目录1、Semaphore信号量源码解析(基于jdk11)1.1Semaphore概述1.2Semaphore的原理1.2.1基本结构(jdk11)1.2.2可中断获取信号量1.2.3公平模式1.2.4非公平模式1.2.4不......