程序中互斥的實現

今日收穫

    一說到互斥,我們首先想到最簡單的可能就是單例模式。但我們平常用的最多的就是進程的互斥,所以如果要實現一個應用程序只能創建一個的話,可以使用互斥的知識來實現。

    這裏我們說一下Delphi中關於互斥的實現,

 

// 創建互斥量
HANDLE m_hMutex = CreateMutex(NULL, FALSE, "Sample07");
// 檢查錯誤代碼
if (GetLastError() == ERROR_ALREADY_EXISTS) {
 // 如果已有互斥量存在則釋放句柄並復位互斥量
 CloseHandle(m_hMutex);
 m_hMutex = NULL;
 // 程序退出
 return FALSE;
}

 

主要是採用CreateMutex函數進行實現,每次創建窗體的時候可以採用createMutex判斷進程是否已存在,如果已存在,則提示後退出即可。

 

擴展思考

    用到最多的就是進程的互斥訪問控制。可以對資源進行控制。當多個進程訪問同一個資源時,可以爲該資源添加鎖,如果該鎖存在,則其他進程不能訪問該資源。

昨日遺留

  非模態窗體被focus的時候數據的刷新。可以再onactivate函數中實現數據的刷新,還有可能就是數據刷新了但未顯示出來。例如TGrandViewGrid就顯示不出刷新的數據,但是如果將某個單元格選中,即可實現數據的及時刷新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章