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


  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://pan.baidu.com/s/1bn0WDtH


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM