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)
相關文章
相關標籤/搜索