You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win32平台是否存在与POSIX sem_init等价的匿名信号量实现?

关于Windows平台类似POSIX共享内存匿名信号量的机制探讨

POSIX匿名信号量允许在共享内存中创建并使用,这一机制的优势很明确:

  • 无访问权限的进程无法获取该信号量的访问权
  • 易于整合进现有数据结构中

我想知道Windows平台是否提供类似机制?目前我找到最接近的实现方式是调用不带名称的CreateSemaphore,再通过继承或DuplicateHandle将句柄传递给子进程。

补充上下文

我计划基于共享内存实现一套RPC系统,共享内存中的数据结构定义如下:

struct shm_rpc_block {
  enum rpc_state {
    send = 0,
    receive
  };
  rpc_state state;
  sem_t lock;
  char data[2048 - sizeof(rpc_state) - sizeof(sem_t)];
};

状态流转逻辑:

  • state变量初始为send状态
  • 进程1将数据写入data数组,随后把state改为receive并解锁,允许进程2加锁
  • 进程2读取数据并生成响应后发回,进程1读取结果后将RPC状态重置为send

内容的提问来源于stack exchange,提问作者itzjackyscode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:31:22