qt 共享内存 单例

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 共享内存 单例)