Windows 进程间同步之类的事件?

Posted

技术标签:

【中文标题】Windows 进程间同步之类的事件?【英文标题】:Windows Inter Process Synchronizization Like Events? 【发布时间】:2018-10-19 10:45:48 【问题描述】:

我读过一些关于管道和套接字的东西,但似乎没有一个能满足我的需求。

我有一个 GUI 程序。用户可以控制它,告诉它停止、启动等。

当用户单击“开始”按钮时,我的 GUI 程序会运行另一个守护程序 (CLI) 程序。

守护程序应用程序进行一些处理,我希望它向 GUI 应用程序发送信息以显示给用户。但我无法在while 循环上运行我的 GUI 应用程序来等待该信息。

有没有更好的方法来做到这一点?比如事件或回调?

【问题讨论】:

管道或套接字可以正常工作。只需在工作线程中使用它,或者至少在非阻塞/异步模式下使用它,这样就不会在从守护进程读取数据时阻塞 UI 线程。 您可以使用 Windows 消息、FindWindowSendMessage API 来执行此操作。 【参考方案1】:

事件或信号量可能是您想要的。

看到这个答案:Can Events be Inter-Process?

对于简单的事件触发,应该足够了。命名管道或共享内存映射文件更适合用于传输大量数据。

【讨论】:

感谢您的链接。只是一个快速的问题,以节省谷歌搜索的时间,我是否需要函数 OpenEvent、WaitForSingleObject 和 SetEvent?编辑:好像是这样。谢谢。 @jordancedrick 老实说,使用同步对象并不是一个简单的话题,在不真正了解您的应用程序或您的经验水平的情况下说出您的需求是不现实的。主题可以占用一个月的课程。无论如何,在谷歌上搜索示例和设计模式可能是一个有用的练习。

以上是关于Windows 进程间同步之类的事件?的主要内容,如果未能解决你的问题,请参考以下文章

POSIX 进程间同步

windows上的进程间同步

在 windows 中使用互斥锁进行进程间同步(win32 或 C++)

C/C++使用Windows的API实现共享内存以及同步

Windows进程间共享内存通信实例

Windows 中是不是有监控同步对象(互斥量、事件、信号量)的工具?