【发布时间】:2022-01-21 19:26:59
【问题描述】:
我正在尝试从另一个进程获取现有信号量。要创建我使用的信号量:
Semaphore(std::string name, int startState) {
name = "Global\\" + name;
Sem = OpenSemaphore(SYNCHRONIZE | SEMAPHORE_MODIFY_STATE, true, (LPCWSTR)name.c_str());
int s = (startState > 0);
if (Sem == NULL) {
Sem = CreateSemaphore(NULL, s, 1, (LPCWSTR)name.c_str());
}
}
在第一个进程中正确创建了信号量。 GetLastError() 返回 0。在第二个过程中,OpenSemaphore 返回 NULL。 GetLastError() 返回 2。 我试图只通过“名称”来获取信号量 - 没有“全局”,但它得到了相同的结果。请帮忙)
【问题讨论】:
标签: c++ multithreading winapi semaphore