美文网首页
qt 共享内存 单例

qt 共享内存 单例

作者: 你说啥_f478 | 来源:发表于2018-09-17 15:14 被阅读0次

    QT 进程间通信之古老的方法(内存共享)

    让QT只运行一个实例

    以上两篇文章中分别讲述了QSharedMemory的不同作用,第一篇讲了进程间通信,第二篇讲述了怎么让应用程序只启动一个实例。

    今天这篇文章我想讲述下,自己在项目中怎么样让程序只启动一个实例,方法就是使用共享内存(其实qt还有一个单例应用程序类(QtSignleApplication),启动的应用程序,默认只能启动一次)

    QSharedMemory *shareMem = newQSharedMemory(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)

    相关文章

      网友评论

          本文标题:qt 共享内存 单例

          本文链接:https://www.haomeiwen.com/subject/evrqpftx.html