zoukankan      html  css  js  c++  java
  • qt 共享内存 单例

        QT 进程间通信之古老的方法(内存共享)
        让QT只运行一个实例
        以上两篇文章中分别讲述了QSharedMemory的不同作用,第一篇讲了进程间通信,第二篇讲述了怎么让应用程序只启动一个实例。
        今天这篇文章我想讲述下,自己在项目中怎么样让程序只启动一个实例,方法就是使用共享内存(其实qt还有一个单例应用程序类(QtSignleApplication),启动的应用程序,默认只能启动一次)
        QSharedMemory *shareMem = new QSharedMemory(QString("SingleInstanceIdentify"));//创建一个带唯一标示的共享内存指针
        shareMem->create(1)//创建共享内存,如果创建失败,则说明已经创建,否则未创建
    if (shareMem->isAttached())//如果进程附加在共享内存上
          shareMem->detach();//取消进程附加在共享内存上
    delete shareMem;//析构共享内存指针
    注意:如果程序异常退出  则共享内存没有被detach,共享内存段是无法释放的,则应用程序不能被在一起启动,好的做法是,在共享内存create之前,执行attach和detach方法。
        QT中实现应用程序的单例化:这篇文件讲述了怎么实现SingleApplication类。

    以上是共享内存指针使用方式,下面是共享内存对象使用方式:
    QSharedMemory sharedMemory;
    sharedMemory.setKey("unique mark");
    sharedMemory.create(1)

    Qt中实现单例模式(SingleTon)



  • 相关阅读:
    Mysql 基础
    Python Cdn平台文件md5验证
    Linux内存cache/buffer剖析
    wget
    UTV
    智能DNS解析之edns-client-subnet篇
    Python Django
    OpenSSL SNI
    Python 基础(一)
    Python ORM
  • 原文地址:https://www.cnblogs.com/swarmbees/p/5621409.html
Copyright © 2011-2022 走看看