【发布时间】:2018-02-21 14:16:43
【问题描述】:
谁能分享一些关于windows进程间同步的链接或自己的经验。我运行我的程序的更多实例(每个实例有 1 个线程)并希望同步它们。我读了一堆与之相关的函数link,似乎没有一个关于进程间通信的例子(他们都在谈论线程同步)。所以我希望进程等到所有进程都到达代码中的同一行。
这是我目前所拥有的:;
interprocess_mtx = CreateMutex(NULL, FALSE, TEXT("mtx_name"));
if (interprocess_mtx == NULL) {
return (int)GetLastError();
}
if (WaitForSingleObject(interprocess_mtx, 10000) == WAIT_OBJECT_0) {
// here comes the code that needs to be executed synchronously
ReleaseMutex(interprocess_mtx);
}
if (CloseHandle(interprocess_mtx) == 0){
return (int)GetLastError();
}
谢谢
// 已编辑 解决方案: 我运行第一个 .exe 文件,稍等片刻,然后运行其余文件。第一个进程创建一个命名互斥体,锁定它,等待例如5 秒后松开。其余的 exe 文件(进程)创建同名互斥锁,然后锁定互斥锁并立即释放。关键代码部分在发布后执行。
【问题讨论】:
-
命名信号量怎么样?
-
这不是链接共享服务。您有具体的代码和相关问题吗?
-
@kenny 当然,但是如果我使用函数 WaitForSingleObject(),只要只有 1 个不同的进程到达同一行(其余进程不同步),该进程就会继续。而且我认为使用 WaitForMultipleObjects() 没有意义,因为我每个进程只有一个线程-
-
你可以在共享内存中构建一些自定义的东西,祝你好运! stackoverflow.com/questions/7894224/…
-
@LarryTheBlackbird 'WaitForMultipleObjects()' 对我来说很有意义。所有进程至少有一个线程,所以等待 N 个单线程进程就是在等待 N 个线程。
标签: c windows winapi synchronization interprocess