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
相关产品推荐
相关产品推荐

