使用QSharedMemory进行程序内存管理

QSharedMemory 共享内存处理类

这个类的功能是挺强大的,本次只记录这个类的另一种用法。

通过创建共享内存,用共享内存的方式,防止程序多次启动。

在main.cpp中加入以下代码,可防止程序多次启动:

 

QSharedMemory *shareMem = new QSharedMemory(QString("xxxName"));  //创建共享内存指针

    if(shareMem->attach()){  //判断当前xxxName的共享内存是否存在,若存在,则中断程序启动
        return 0;
    }
    shareMem->create(1);  //若不存在,则创建当前共享内存, 顺序执行程序启动

 

主要是针对某些程序,在当前主机只能启动一次的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现检测 QSharedMemory 中数据的变化,可以使用 QTimer 定时器,在定时器的定时器事件中检测 QSharedMemory 中的数据是否发生了变化。 下面是一个示例代码,演示了如何使用定时器检测 QSharedMemory 中数据的变化: ```cpp // 进程1 QSharedMemory sharedMemory("MySharedMemory"); sharedMemory.create(sizeof(int)); int *data = static_cast<int*>(sharedMemory.data()); *data = 42; QTimer timer; connect(&timer, &QTimer::timeout, [&]() { static int value = *data; if (*data != value) { qDebug() << "Data changed:" << *data; value = *data; } }); timer.start(100); // 每100ms检测一次数据是否变化 // 进程2 QSharedMemory sharedMemory("MySharedMemory"); sharedMemory.attach(); int *data = static_cast<int*>(sharedMemory.data()); *qDebug() << *data; // 输出 42 data = 88; // 修改数据为 88 ``` 在这个示例中,进程1创建了一个名为 "MySharedMemory" 的共享内存,并将一个整数值 42 写入该共享内存中。然后启动一个定时器,每 100ms 检测一次共享内存中的数据是否发生了变化。如果发生了变化,则输出变化后的数据。 进程2附加到共享内存中,读取了共享内存中的数据并输出。然后将数据修改为 88,这样进程1 检测到共享内存中的数据已经发生了变化,输出新的数据值 88。 需要注意的是,定时器的定时间隔时间应该根据实际需求来设置,设置太长可能会出现数据丢失,设置太短可能会影响性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值