程序間通訊的訊息佇列和共享記憶體方式的實現
阿新 • • 發佈:2019-01-02
共享記憶體方式使用QSharedMemory 和QSystemSemaphore兩個類實現
一個程序往共享記憶體空間中寫,一個程序往共享記憶體空間中讀
兩程序通訊時:
向共享記憶體中提供資料的一方:
1,定義QSharedMemory shareMemory,並設定標誌名shareMemory.setKey();
2,將共享記憶體與主程序分離 shareMemory.detach();
3,建立共享記憶體 shareMemory.create();
4,將共享記憶體上鎖shareMemory.lock();
5,將程序中要共享的資料拷貝到共享記憶體中;
6,將共享記憶體解鎖shareMemory.unlock();
從共享記憶體中取資料的一方:
1,定義QSharedMemory shareMemory,並設定共享記憶體的標誌名shareMemory.setKey()注意設定的要與提供記憶體共享的一方要一樣。
2,將共享記憶體上鎖shareMemory.lock();
3,將共享記憶體與主程序繫結shareMemory.attach(),使該程序可以訪問共享記憶體的資料;
4,從共享記憶體中取資料;
5,使用完後將共享記憶體解鎖shareMemory.unlock(),另外將共享記憶體與該程序分離shareMemory.detach();
一個程序往共享記憶體空間中寫,一個程序往共享記憶體空間中讀
兩程序通訊時:
向共享記憶體中提供資料的一方:
1,定義QSharedMemory shareMemory,並設定標誌名shareMemory.setKey();
2,將共享記憶體與主程序分離 shareMemory.detach();
3,建立共享記憶體 shareMemory.create();
4,將共享記憶體上鎖shareMemory.lock();
5,將程序中要共享的資料拷貝到共享記憶體中;
6,將共享記憶體解鎖shareMemory.unlock();
從共享記憶體中取資料的一方:
1,定義QSharedMemory shareMemory,並設定共享記憶體的標誌名shareMemory.setKey()注意設定的要與提供記憶體共享的一方要一樣。
2,將共享記憶體上鎖shareMemory.lock();
3,將共享記憶體與主程序繫結shareMemory.attach(),使該程序可以訪問共享記憶體的資料;
4,從共享記憶體中取資料;
5,使用完後將共享記憶體解鎖shareMemory.unlock(),另外將共享記憶體與該程序分離shareMemory.detach();