代码之家  ›  专栏  ›  技术社区  ›  user120747

qt便携式工控机:只有qsharedmemory?

  •  4
  • user120747  · 技术社区  · 16 年前

    我在寻找一种选择一种可移植的方式来实现本地IPC的健壮的方法,因为我是新的C++,并且希望避免共享共享内存和锁的常见陷阱,因此我在考虑消息传递风格IPC。

    无论如何,我计划使用qt是出于其他原因,所以我看了一下qt ipc选项。

    如果我理解正确,qt不会提供完全可移植的消息传递IPC功能。它可以使用D总线,但在Windows上使用它会是一个问题。其他的方法仅限于嵌入式Linux平台(我想把它移植到AIX)。

    我找不到使用qsharedmemory和qsystemsemaphores的“信号和插槽”或消息传递样式实现

    因此:我是否仅限于在qsm/qss上实现一个特性? 我还可以学习其他哪些选择? POSIX管道?协议缓冲区?增加队列和消息?

    我正在考虑根据lgpl/gpl样式的许可证发布代码,这是否排除了协议缓冲区或boost libs?

    请再说一次,接口必须是简单的和新的证明(否则我肯定会把事情搞得一团糟:),类型的序列化/反序列化、错误处理和资源处理也应该如此。

    3 回复  |  直到 9 年前
        1
  •  4
  •   Jason B    16 年前

    看一看 Boost.Interprocess 它提供了许多IPC功能。我用了中间过程 message_queue 这提供了一个非常干净和简单的方法来做我认为你想做的事情。

        2
  •  2
  •   Gediminas    13 年前

    你可以使用 QLocalSocket QlocalServer 也适用于工控机。 这两个类真的很容易使用,而且它们的实现方式几乎与使用qt-tcp套接字客户机/服务器的方式相同。

    你可以看看这些YouTube视频:

    QTCPServer - a basic TCP server application

    QTcpServer using multiple threads

    (几乎Sames原则适用于“本地”服务器/客户机,而不是“TCP”)。

        3
  •  0
  •   e.jahandar    9 年前

    作为Qt5.9,有一个模块目前处于技术预览名称下。 QtRemoteObjects 它为QObjects提供了Qt本机工控机,易于使用,可用于共享信号/时隙以及两个进程之间的模型。

    它适用于Linux、Windows和Android

    推荐文章