歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Qt共享內存實現進程間通信(QSharedMemory)

Qt共享內存實現進程間通信(QSharedMemory)

日期:2017/3/1 9:19:35   编辑:Linux編程

  Qt提供了一種安全的共享內存的實現QSharedMemory,以便在多線程和多進程編程中安全的使用。

  先說下實現共享內存的步驟,然後用一具體的實例說明。

  (一)向共享內存中提供數據的一方:

  1,定義QSharedMemory shareMemory,並設置標志名shareMemory.setKey(),例如shareMemory.setKey("shareimg");

  2,將共享內存與主進程分離 shareMemory.detach();

  3,創建共享內存 shareMemory.create();

  4,將共享內存上鎖shareMemory.lock();

  5,將進程中要共享的數據拷貝到共享內存中;

  6,將共享內存解鎖shareMemory.unlock();

(二)從共享內存中取數據的一方:

  1,定義QSharedMemory shareMemory,並設置共享內存的標志名shareMemory.setKey()注意設置的要與提供內存共享的一方要一樣,本例是shareMemory.setKey("shareimg")。

  2,將共享內存上鎖shareMemory.lock();

  3,將共享內存與主進程綁定shareMemory.attach(),使該進程可以訪問共享內存的數據;

  4,從共享內存中取數據;

  5,使用完後將共享內存解鎖shareMemory.unlock(),最後將共享內存與該進程分離shareMemory.detach();

如程序運行圖:

上面的程序(稱為A)將圖片從文件中讀取並顯示,同時將讀取的圖片數據復制到共享內存。下面的程序(稱為B)直接從共享內存中獲取A讀取的圖片數據並顯示出來。

源代碼下載

------------------------------------------分割線------------------------------------------

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2016年資料/1月/8日/Qt共享內存實現進程間通信(QSharedMemory)/

下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm

------------------------------------------分割線------------------------------------------

Copyright © Linux教程網 All Rights Reserved