用于Windows和Linux IPC的信号

时间:2018-03-09 19:51:28

标签: linux windows concurrency signals ipc

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

1 个答案:

答案 0 :(得分:0)

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