linux - Windows 和 Linux IPC 的信号

标签 linux windows concurrency signals ipc

为了代码在 Windows 和 Linux/Unix 之间兼容。我想使用MingW的工具集和CodeBlocks进行开发,这样代码可以在Linux和Windows上编译运行。我尝试设计的系统是一个非常繁忙、繁重的数据交换系统,就像服务器和客户端一样,都在同一个盒子里运行,时间安排很关键。所以我需要Server和Client之间的IPC。我想通过用户信号通知很多客户端在某些特定的时间进行一些数据处理 Action 。这意味着我需要一组用于不同操作的信号。当我将这些信号发送给客户端时,我还需要发送一两个参数。事件处理、消息传递、插槽、命名管道、套接字等 IPC 方法可能无法满足我的目的,因为它们需要客户端不断地抽取/查看传入的信息,这将占用繁忙系统的 CPU。)所以想法方法将是信号,客户正在 sleep ,只有在收到信号后才会醒来做工作。 对于 Linux 端,看起来我可以使用足够的用户信号(特定的 sigaction)。但对于 Windows 端,信号仅限于 SIGABRT、SIGFPE、SIGILL、SIGINT、SIGSEGV、SIGTERM。没有用户信号,也不能传递参数。另外,我需要服务器能够通过他们的 pid 向所有客户端广播信号。我查看了 boost 和其他软件,到目前为止还找不到我可以用于 Windows 的软件。 有什么建议吗?

最佳答案

我最终使用了 boost 的消息队列和共享内存。消息传递充当传递大数据的信号和共享内存。稍后将测试其他方法以进行 CPU 性能比较。

关于linux - Windows 和 Linux IPC 的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49201182/

相关文章:

linux - 我制作了防火墙脚本但无法正常工作

php - 可以查看网站的 PHP 代码吗?

linux - 与 Unix 中的 head 和 tail 命令相关

c# - 如何锁定具有相同ID的对象?

java - lock.tryLock() 线程安全吗?

linux - 为什么在 find 命令中使用 dirname 会为每个匹配项提供点?

c - 我想通过 shellexecute() 通过变量打开网站,方法是在 c 中为变量分配网址

mysql - 如何在 MySQL 命令行客户端中更改用户

java - Map Reduce IOException中的问题

java - 单例 Bean 上的 Spring @Async