c++ - 在 C++ 中从另一个进程解锁线程

标签 c++ synchronization ipc interprocess

我正在编写进程间通信模块(进程 A 和进程 B)。

有什么方法可以在进程 A 完成特定操作后立即运行(解锁)B 中的通信线程,我的意思是 B 无需进行任何轮询,也无需 B 在 A 完成其操作后等待太多时间?

管理这些问题的概念/模型/设计模式是什么? (比进程间同步更精确的东西)。您推荐哪些库/方法?

谢谢。

编辑:我正在寻找适合三种主要操作系统的方法:Ms Windows、Apple Mac OS X、GNU/Linux。

最佳答案

这是一项相当艰巨的工作:

对于 Unix 操作系统,您可以使用:

  • pthread 条件和带有 setpshared 参数的互斥量。

    注意:在Linux 2.6、Solaris下支持很好,但不支持FreeBSD和Cygwin(不知道Mac OS X)

  • 对于 Unix,您也可以使用命名信号量,但我不知道它们的支持级别

  • 对于 Windows,有一些事件...

这是一项艰巨的工作,尤其是对于 IPC...

因此,如果您想要可移植的东西,我建议您看一下具有条件和互斥锁的 Boost.Interprocess...

但请确保您要支持的所有操作系统都支持所有功能。

关于 Boost.Interprocess 的注意事项

仔细检查您需要使用的每个 Unix 操作系统的支持级别,因为 Boost.Interprosess 使用的 pthread_* 函数并不总是受支持...然后故障返回到仿真——检查此类仿真的质量

另外,检查这些东西在 Windows 上是如何工作的——据我所知,在 Win32 API 中没有“共享内存”互斥锁,通常应该使用命名对象,所以检查支持什么以及如何支持。

关于c++ - 在 C++ 中从另一个进程解锁线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1231991/

相关文章:

c - 消息队列(msgget - msgsnd - msgrcv)Linux - EIDRM

c++ - __declspec(dllexport) 做什么,在导入函数之前添加它

c# - 是否有通过网络同步数据列表的模式?

c++ - 将所有二进制位变为一种状态所需的最少步骤数

php - 在开发、暂存和生产之间同步 Drupal 站点

java - 跨类同步

posix - 应该使用 SystemV 消息队列还是 POSIX 消息队列?

c - 在 c 中的消息队列上进行类型转换

c++ - 有什么简单的方法可以在 if-else 链的末尾执行与 else 相反的操作吗?

c++ - 在什么情况下可能需要动态分配函数指针?