windows進程單例

一. 為什么要實現(xiàn)進程單例


二.實現(xiàn)進程單例的思路方法:

? ? 1.思路:

? ? ? 進程在啟動時首先檢查當前系統(tǒng)是否已經(jīng)存在有此進程的實例,如果沒有,進程將成功創(chuàng)建并設(shè)置標識實例已經(jīng)存在的標記。此后再創(chuàng)建進程時將會通過該標記而知曉其實例已經(jīng)存在,從而保證進程在系統(tǒng)中只能存在一個實例。

? ? 2.方法:

? ? ? 內(nèi)存映射文件、有名事件量、有名互斥量以及全局共享變量等多種方法來實現(xiàn)

三.具體實現(xiàn):

? ? ?互斥量:

? ? ? 使用CreateMutex() 得到一個Hanldle句柄,使用GetLastError()判斷是否為ERROR_ALREADY_EXISTS,如果是則已經(jīng)存在。

// 創(chuàng)建互斥量

HANDLE m_hMutex = CreateMutex(NULL, FALSE, "Sample07");

// 檢查錯誤代碼

if (GetLastError() == ERROR_ALREADY_EXISTS) {

// 如果已有互斥量存在則釋放句柄并復位互斥量

CloseHandle(m_hMutex);

m_hMutex = NULL;

// 程序退出

return FALSE;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • 所謂多進程參數(shù)傳遞過程,實際上是在程序的多次重復運行時,為保證內(nèi)存中的進程唯一性又不丟失后來啟動時傳遞的命令行參數(shù)...
    goldroc閱讀 1,005評論 0 1
  • 一、 【例3-1-4】在操作系統(tǒng)中,要對并發(fā)進程進行同步的原因是 。 A. 進程必須在有限的時間內(nèi)完成 B. 進程...
    ZoeyeoZ閱讀 5,333評論 0 9
  • ## 可重入函數(shù) ### 可重入性的理解 若一個程序或子程序可以安全的被并行執(zhí)行,則稱其為可重入的;即當該子程序正...
    夏至亦韻閱讀 804評論 0 0
  • 一場秋雨后,晴空如洗,秋日的陽光不濃不淡地鋪灑開來,悠然徜徉的白云恰到好處地點綴著那美到極致的鄂爾多...
    花開半夏anle閱讀 899評論 0 1

友情鏈接更多精彩內(nèi)容