進程間通信

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 模塊包括: