°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
µÈ´ý¡£¡¡¡¡
¡¡¡¡¡¡¡¡Win32¡¡ÌṩÁË´´½¨»¥³âÆ÷¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CreateMutex£¨£©¡¡£¬´ò¿ª»¥³âÆ÷¡¡¡¡¡¡¡¡¡¡¡¡OpenMutex£¨£©¡¡£¬ÊÍ·Å»¥³âÆ÷¡¡
ReleaseMutex£¨£©µÈ²Ù×÷¡£¡¡¡¡
¡¡¡¡¡¡¡¡Mutex¡¡µÄÓµÓÐȨ²¢·ÇÊôÓÚ²úÉúËüµÄÄǸöỊ̈߳¬¶øÊÇÊôÓÚ×îºó¶Ô´Ë¡¡¡¡Mutex¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡½øÐеȴý²Ù×÷¡¡
£¨¡¡
¡¡WaitForSingleObject¡¡£©²¢ÇÒÉÐδ½øÐС¡ReleaseMutex£¨£©²Ù×÷µÄÏ̡߳£Ïß³ÌÓµÓС¡Mutex¡¡¡¡¾ÍºÃÏñ½ø¡¡
ÈëÁÙ½çÇøÒ»Ñù£¬Ò»´ÎÖ»ÄÜÓÐÒ»¸öÏß³ÌÓµÓиá¡Mutex¡¡¡£Èç¹ûÒ»¸öÓµÓС¡Mutex¡¡µÄÏß³ÌÔÚ·µ»Ø֮ǰ¡¡
ûÓе÷Óá¡ReleaseMutex£¨£©¡¡£¬ÄÇôÕâ¸ö¡¡Mutex¡¡¾Í±»ÉáÆúÁË¡£µ±ÆäËûÏ̵߳ȴýÕâ¸ö¡¡Mutex¡¡Ê±£¬ÈÔ¡¡
ÄÜ·µ»Ø£¬²¢µÃµ½Ò»¸ö¡¡WAIT_ABANDONED_0¡¡·µ»ØÖµ£¬Ò»¸ö¡¡Mutex¡¡±»ÉáÆúÊÇ¡¡Mutex¡¡ÌØÓеŦ¡¡
ÄÜ¡£ÏÂÃæÏêϸ½éÉÜ¡¡Mutex¡¡Ïà¹ØµÄº¯Êý¡£¡¡¡¡
¡¡¡¡¡¡¡¡£¨1£©CreateMutex¡¡¡¡
¡¡¡¡¡¡¡¡º¯Êý¡¡CreateMutex¡¡ÓÃÀ´´´½¨»ò´ò¿ªÓÐÃû»òÎÞÃûµÄ¡¡Mutex¡¡¶ÔÏó¡£Èç¹ûµ÷Óóɹ¦£¬º¯Êý·µ»Ø¡¡
´´½¨ºó¶ÔÏóµÄ¾ä±ú¡¡¡£Èç¹ûͬÃû¡¡Mutex¡¡¶ÔÏóÔÚ´´½¨Ö®Ç°¾ÍÒѾ´æÔÚ£¬Ôòº¯Êý·µ»ØÏÖÓеĶÔÏóµÄ¡¡
¾ä±ú£¬²¢ÇÒ¡¡GetLastError¡¡¡¡º¯Êý·µ»Ø¡¡ERROR_ALREADY_EXISTS¡¡¡£·ñÔò·µ»Ø´´½¨µÄ¡¡Mutex¡¡¶Ô¡¡
Ïó¾ä±ú¡£Èç¹ûµ÷ÓÃʧ°Ü£¬·µ»Ø¿ÕÖµ¡£ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡HANDLE¡¡CreateMutex£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPSECURITY_ATTRIBUTES¡¡lpMutexAttributes£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡BOOL¡¡bInitialOwner£»¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPCTSTR¡¡lpName¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡£©£»¡¡¡¡
¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡lpMutexAttributes¡¡£ºÖ¸Ïò¡¡SECURITY_ATTRIBUTES¡¡½á¹¹µÄÖ¸Õ룬¾ö¶¨·µ»ØµÄ¾ä±úÊÇ·ñ¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¿ÉÒÔ±»×Ó½ø³Ì¼Ì³Ð¡£Èç¹ûΪ¿Õ£¬Ôò²»Äܱ»¼Ì³Ð¡£¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¤239¡¡¡¤¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡251¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
Visual¡¡C£«£«¡¡6¡£0¡¡³ÌÐòÉè¼Æ´ÓÈëÃŵ½¾«Í¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡bInitialOwner¡¡£º¡¡Ö¸¡¡¶¨¡¡Mutex¡¡¡¡¡¡¶Ô¡¡Ï󡡵ġ¡³õ¡¡Ê¼¡¡Óµ¡¡ÓС¡Õß¡¡¡£¡¡Èç¡¡¹û¡¡µ÷¡¡Óá¡Õß¡¡´´¡¡½¨¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Mutex¡¡¡¡²¢¡¡ÇÒ¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡bInitialOwner¡¡Îª¡¡TRUE£¬µ÷ÓÃÏ̻߳ñµÃ¡¡Mutex¡¡¶ÔÏóµÄÓµÓÐȨ¡£·ñÔò£¬µ÷ÓÃÏ̲߳»ÓµÓС¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡Mutex¡¡µÄËùÓÐȨ¡£¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡lpName¡¡£ºMutex¡¡¶ÔÏóµÄÃû³Æ¡£×Ö·û´®µÄ×î´ó³¤¶ÈΪ¡¡MAX_PATH¡¡¸ö×Ö·û¡£×Ö·û´®Çø·Ö¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡´óСд¡£Èç¹û¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡lpName¡¡¡¡ºÍÒ»¸öÏÖÓеġ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Mutex¡¡¡¡¡¡¶ÔÏóÖØÃû£¬º¯ÊýÐèÒª¶ÔÒÑÓеĶÔÏóÓС¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡MUTEX_ALL_ACCESS¡¡¡¡µÄ·ÃÎÊȨ¡£ÕâÖÖÇé¿öÏ£¬²ÎÊý¡¡bInitialOwner¡¡¡¡±»ºöÂÔ£¬ÒòΪ´Ë¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ê±ËüÒѾ±»ÒÑÓеĽø³Ì³õʼ»¯¡£Èç¹û¡¡lpMutexAttributes¡¡·Ç¿Õ£¬Ëü¾ö¶¨¾ä±úÊÇ·ñ¿ÉÒÔ±»¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¼Ì³Ð£¬µ«ÊÇËüµÄ°²È«ÃèÊö³ÉÔ±±»ºöÂÔ¡£Èç¹û¡¡lpName¡¡Îª¿Õ£¬´´½¨µÄ¡¡Mutex¡¡¶ÔÏóûÓÐÃû¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡³Æ¡£¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨2¡¡£©OpenMutex¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯Êý¡¡OpenMutex¡¡ÓÃÀ´´ò¿ªÒ»¸ö´æÔÚµÄÓÐÃû³ÆµÄ¡¡Mutex¡¡¶ÔÏó¡£Èç¹ûµ÷Óóɹ¦£¬·µ»Ø´ò¿ªµÄ¡¡
¶ÔÏóµÄ¾ä±ú¡£·´Ö®Ôò·µ»Ø¿ÕÖµ¡£ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡HANDLE¡¡OpenMutex£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡DWORD¡¡dwDesiredAccess£»¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡BOOL¡¡bInheritHandle£»¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPCTSTR¡¡lpName¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýÖ÷Òª²ÎÊýµÄÒâÒå¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡dwDesiredAccess¡¡£ºÖ¸¶¨Ï£Íû¶Ô¡¡Mutex¡¡¶ÔÏó½øÐеķÃÎÊÀàÐÍ¡£¿ÉÒÔÊÇÏÂÃæÖµµÄ×éºÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¤¡¡MUTEX_ALL_ACCESS¡¡£º¿ÉÒÔ¶Ô¡¡Mutex¡¡¶ÔÏó½øÐÐËùÓзÃÎÊ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¤¡¡SYNCHRONIZE£ºÔÊÐíÈκεȴýº¯Êý»ñµÃ¡¡Mutex¡¡¶ÔÏóµÄËùÓÐȨ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡bInheritHandle¡¡£ºÖ¸¶¨·µ»ØµÄ¾ä±úÊÇ·ñ¿ÉÒÔ±»¼Ì³Ð¡£¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡lpName¡¡£ºÒª´ò¿ªµÄ¡¡Mutex¡¡¶ÔÏóµÄÃû³Æ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨3¡¡£©ReleaseMutex¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯Êý¡¡ReleaseMutex¡¡ÊÍ·ÅÖ¸¶¨µÄ¡¡Mutex¡¡¶ÔÏóµÄËùÓÐȨ¡£Èç¹ûµ÷ÓÃÏß³ÌûÓС¡Mutex¡¡¶ÔÏóµÄËù¡¡
ÓÐȨ£¬Ôò˵Ã÷µ÷ÓÃʧ°Ü¡£ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡BOOL¡¡ReleaseMutex£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡HANDLE¡¡hMutex¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡hMutex¡¡£ºMutex¡¡¶ÔÏóµÄ¾ä±ú¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨4¡¡£©CMutex¡¡¡¡
¡¡¡¡¡¡¡¡¡¡Mutex¡¡ÔÚ¡¡MFC¡¡¡¡ÖÐÏàÓ¦µÄÀàÊÇ¡¡CMutex¡¡¡£CMutex¡¡Í¨¹ý¹¹Ô캯Êý´´½¨Ò»¸ö»¥³âÆ÷¶ÔÏó¡£µ±¡¡
ij¸ö×ÊÔ´ÔÚÒ»¸öʱ¼äÖ»ÔÊÐíÒ»¸öÏ̷߳ÃÎʵÄʱºò£¬»¥³âÆ÷ÕýºÃÅÉÉÏÓó¡¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡CMutex¡¡Ö»ÓÐÒ»¸ö¹¹Ô캯Êý¡¡CMutex£º£ºCMutex£¬ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡
¡¡¡¡¡¡¡¡¡¡CMutex£¨¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡BOOL¡¡bInitiallyOwn¡¡=¡¡FALSE£»¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡LPCTSTR¡¡lpszName¡¡=¡¡NULL£»¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡LPSECURITY_ATTRIBUTES¡¡lpsaAttribute¡¡=¡¡NULL¡¡¡¡¡¡¡¡
¡¡¡¤240¡¡¡¤¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡252¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡µÚ¡¡9¡¡Õ¡¡¡¡¡¡¡¡¶àÏ̡߳¡¡¡
¡¡¡¡¡¡¡¡£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡bInitiallyOwn¡¡£ºÖ¸¶¨´´½¨Ïß³ÌÊÇ·ñÔÚ¡¡CMutex¡¡¶ÔÏó³õʼ´´½¨Ê±·ÃÎÊ»¥³âÆ÷¿ØÖƵÄ×ÊÔ´¡£¡¡¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡lpszName¡¡£ºCMutex¡¡¡¡¡¡¶ÔÏóµÄÃû³Æ¡£Èç¹ûÓÐͬÃûµÄ»¥³âÆ÷´æÔÚ£¬Èç¹ûΪ¿Õ£¬»¥³âÆ÷¾Íû¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÓÐÃû³Æ¡£Èç¹ûºÍÒÑÓеĻ¥³â¶ÔÏóͬÃû£¬¹¹Ô캯Êý´´½¨Ò»¸öÒÔ´æÔÚÃû³ÆΪ²Î¿¼µÄеġ¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡CMutex¡¡¶ÔÏó¡£Èç¹ûÃû³ÆºÍÒÑÓеÄÆäËûͬ²½¶ÔÏóͬÃû£¬¹¹Ô콫ʧ°Ü¡£¡¡¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡lpsaAttribute¡¡£º»¥³â¶ÔÏóµÄ°²È«ÊôÐÔ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡5¡¡£®ÐźÅÁ¿£¨Semaphore£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡ÐźÅÁ¿ÊÇ×î¾ßÀúÊ·µÄͬ²½»úÖÆ¡¡¡£ÐźÅÁ¿Êǽâ¾ö¡¡producer/consumer¡¡¡¡ÎÊÌâµÄ¹Ø¼üÒªËØ¡£¶ÔÓ¦¡¡
µÄ¡¡MFC¡¡ÀàÊÇ¡¡CSemaphore¡¡¡£Win32¡¡º¯Êý¡¡CreateSemaphore£¨£©ÓÃÀ´²úÉúÐźÅÁ¿¡£ReleaseSemaphore£¨£©¡¡
ÓÃÀ´½â³ýËø¶¨¡£Semaphore¡¡¡¡µÄÏÖÖµ´ú±íµÄÒâÒåÊÇÄ¿Ç°¿ÉÓõÄ×ÊÔ´Êý£¬Èç¹û¡¡Semaphore¡¡¡¡µÄÏÖÖµ¡¡
Ϊ¡¡1£¬±íʾ»¹ÓÐÒ»¸öËø¶¨¶¯×÷¿ÉÒԳɹ¦¡£Èç¹ûÏÖֵΪ¡¡5£¬¾Í±íʾ»¹ÓС¡5¡¡¸öËø¶¨¶¯×÷¿ÉÒԳɹ¦¡£¡¡
µ±µ÷Óá¡Wait¡¡µÈº¯ÊýÒªÇóËø¶¨£¬Èç¹û¡¡Semaphore¡¡ÏÖÖµ²»Îª¡¡0£¬Wait¡¡ÂíÉÏ·µ»Ø£¬×ÊÔ´Êý¼õ¡¡1¡£µ±¡¡
µ÷Óá¡ReleaseSemaphore£¨£©×ÊÔ´Êý¼Ó¡¡1£¬µ±Ê±²»»á³¬¹ý³õʼÉ趨µÄ×ÊÔ´×ÜÊý¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨1£©CreateSemaphore¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯Êý¡¡CreateSemaphore¡¡ÓÃÀ´´´½¨»òÕß´ò¿ª¡¡Semaphore¡¡¶ÔÏó¡£Èç¹ûµ÷Óóɹ¦£¬º¯Êý·µ»Ø´´¡¡
½¨ºóµÄ¶ÔÏó¾ä±ú¡£Èç¹ûͬÃû¡¡Semaphore¡¡¶ÔÏóÔÚ´´½¨Ö®Ç°¾ÍÒѾ´æÔÚ£¬Ôòº¯Êý·µ»ØÏÖÓеĶÔÏó¡¡
µÄ¾ä±ú£¬²¢ÇÒ¡¡GetLastError¡¡º¯Êý·µ»Ø¡¡ERROR_ALREADY_EXISTS¡¡¡£·ñÔò·µ»Ø´´½¨µÄ¡¡Semaphore¡¡
¶ÔÏó¾ä±ú¡£Èç¹ûµ÷ÓÃʧ°Ü£¬·µ»Ø¿ÕÖµ¡£ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡HANDLE¡¡CreateSemaphore£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPSECURITY_ATTRIBUTES¡¡lpSemaphoreAttributes£»¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LONG¡¡lInitialCount£»¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LONG¡¡lMaximumCount£»¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPCTSTR¡¡lpName¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡lpSemaphoreAttributes¡¡£ºÖ¸¶¨¡¡SECURITY_ATTRIBUTES¡¡½á¹¹µÄÖ¸Õë¡£¾ö¶¨·µ»ØµÄ¾ä±ú¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÊÇ·ñ¿ÉÒÔ±»×Ó½ø³Ì¼Ì³Ð¡£Èç¹û¡¡lpSemaphoreAttributes¡¡Îª¿Õ£¬Ôò¾ä±ú²»Äܱ»¼Ì³Ð¡£¡¡¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡lInitialCount¡¡£ºÖ¸¶¨¡¡Semaphore¡¡¶ÔÏóµÄ³õʼ¼ÆÊýÖµ¡¡¡£¸ÃÖµ±ØÐë´óÓÚ»òµÈÓÚÁ㲢СÓÚ»òµÈ¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÓÚ¡¡lMaximumCount¡¡¡£¡¡¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡lMaximumCount¡¡£ºÖ¸¶¨¡¡Semaphore¡¡¶ÔÏóµÄ×î´óÊýÄ¿¡£±ØÐë´óÓÚÁã¡£¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡o¡¡¡¡lpName¡¡£ºSemaphore¡¡¶ÔÏóµÄÃû³Æ¡£×Ö·û´®µÄ×î´ó³¤¶ÈΪ¡¡MAX_PATH¡¡¡¡¸ö×Ö·û¡£×Ö·û´®¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡Çø·Ö´óСд¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨2¡¡£©OpenSemaphore¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯Êý¡¡OpenSemaphore¡¡ÓÃÀ´´