进程间通信

Qt 支持与运行在同一系统 (或不同系统) 中的其它进程,进行通信的多种办法。基本上有 3 种 IPC (进程间通信) 机制:

  1. 同步原语
  2. 任意字节级数据的交换
  3. 传递结构化消息

同步原语

Qt 为明确进程间同步只提供了 1 个类: QSystemSemaphore QSystemSemaphore QSemaphore 是可访问的通过同一系统中的多个进程。它由 "键" 全局标识,在 Qt 中的表示是通过 QNativeIpcKey 类。此外,从属 OS (操作系统),为共享内存 Qt 可能支持多个不同后端;见 本机 IPC (进程间通信) 键 文档编制,了解更多信息和局限性。

使用常规线程同步原语 (譬如:互斥、等待条件及读写锁) 是可能的,在进程之间内存中共享。Qt 未提供任何类来支持这,但应用程序可以在某些操作系统中使用低级操作。

其它 Qt 类可以用于提供更高级锁定,像 QLockFile ,或通过获得唯一、系统范围资源。这种技术包括 TCP or UDP 端口或知名名称在 D-Bus .

字节级数据共享

使用字节级数据,应用程序可以实现它们选取的任何通信协议。字节数据的共享可以面向流 (序列化),或者可以允许随机访问 (条件类似于 QFileDevice::isSequential ()).

对于串行通信,Qt 提供了很多不同类,甚至完整模块:

在同一系统随机访问共享数据,Qt 提供了 QSharedMemory 。见 共享内存 文档编制了解详细信息。

结构化消息传递

Qt 还提供了很多与其它进程,交换结构化消息的技术。应用程序可以构建于上文的字节级解决方案之上,譬如使用 QJsonDocument or QXmlStreamReader / QXmlStreamWriter 通过 HTTP 以分别履行 JSONRPC 或 XMLRPC,或 QCborValue 采用 QtCoAP。

用于结构化消息和远程过程调用的专用 Qt 模块包括: