zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HCIA-IoT 华为认证物联网工程师
    [书目20210522]投资最重要的事
    [书目20210414]海龟交易法则
    [书目20210224]陆蓉 行为金融学讲义
    [书目20210207]肖星的财务思维课
    [转]昂克英文君 一张图告诉你英语该怎么学
    Cloud Native
    Aerospike-介绍
    Groovy使用场景
    javaStream与响应式流
  • 原文地址:https://www.cnblogs.com/gis-user/p/4979649.html
Copyright © 2011-2022 走看看