使用內核對象使程序單實例運行:互斥信號量

內核對象是所有Windows進程都可以訪問的,因此可以使用其中的互斥信號量和事件對象使程序單實例運行。。

比起原來的IO鎖好了很多 = = DEMO如下:

【使用互斥信號量(互斥對象)實現】

Code:
  1. //////////////////////////////////////////////////////////////////////////   
  2. //  CopyRight(c) 2009, YOYO, All Rights Reserved.   
  3. //  Author: LIN YiQian   
  4. //  Created: 2009/09/16   
  5. //  Describe: 使用內核對象控制程序只能單實例 演示   
  6. //////////////////////////////////////////////////////////////////////////   
  7. #include <Windows.h>   
  8. #include <iostream>   
  9. using namespace std;   
  10.   
  11. void main(void)   
  12. {   
  13.     HANDLE hInstance = CreateMutex(NULL, TRUE, "SingleInstance");   
  14.   
  15.     if (hInstance)   
  16.     {   
  17.         if (ERROR_ALREADY_EXISTS == GetLastError())   
  18.         {   
  19.             printf("程序已經啓動!");   
  20.   
  21.             system("pause");   
  22.             return;   
  23.         }   
  24.     }   
  25.        
  26.     while (true)   
  27.     {   
  28.         printf("程序運行阿 = = 運行阿 = = 運行阿。。/n");   
  29.         Sleep(100);   
  30.     }   
  31.   
  32.     CloseHandle(hInstance);   
  33.   
  34.     return;   
  35. }  

 

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