ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡ÔĶÁ¹ý³Ì·¢ÏÖÈκδíÎóÇë¸æËßÎÒÃÇ£¬Ð»Ð»£¡£¡ ±¨¸æ´íÎó
Ò»ÊÀÊé³Ç ·µ»Ø±¾ÊéĿ¼ ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ½øÈëÊé°É ¼ÓÈëÊéÇ©

VCÓïÑÔ6.0³ÌÐòÉè¼Æ´ÓÈëÃŵ½¾«Í¨-µÚ68ÕÂ

°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡






¡¡¡¡¡¡¡¡¡¡£¨1£©CreateEvent¡¡¡¡

¡¡¡¡¡¡¡¡¡¡Í¨¹ýµ÷Óá¡Win32API¡¡º¯Êý¡¡CreateEvent¡¡À´´´½¨»òÕß´ò¿ªÒ»¸öʼþ¶ÔÏó¡¡¡£Èç¹ûµ÷Óóɹ¦£¬·µ¡¡

»Øʼþ¶ÔÏóµÄ¾ä±ú£¬·ñÔò·µ»Ø¿Õ¡£ËüµÄº¯ÊýÔ­ÐÍÈçÏ£º¡¡¡¡



¡¡¡¡¡¡¡¡¡¡HANDLE¡¡CreateEvent£¨¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPSECURITY_ATTRIBUTES¡¡lpEventAttributes£»¡¡¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡BOOL¡¡bManualReset£»¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡BOOL¡¡bInitialState£»¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPCTSTR¡¡lpName¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡



¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡o¡¡¡¡lpEventAttributes¡¡£ºÖ¸Ïò¡¡SECURITY_ATTRIBUTES¡¡½á¹¹µÄÖ¸Õ룬Ëü¾ö¶¨·µ»ØµÄ¾ä±úÊÇ¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡·ñ¿ÉÒÔ±»×Ó½ø³Ì¼Ì³Ð¡£Èç¹û¡¡lpEventAttributes¡¡Îª¿Õ£¬Ôò²»Äܱ»¼Ì³Ð¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¤237¡¡¡¤¡¡¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡249¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

Visual¡¡C£«£«¡¡6¡£0¡¡³ÌÐòÉè¼Æ´ÓÈëÃŵ½¾«Í¨¡¡¡¡



¡¡¡¡¡¡¡¡¡¡o¡¡¡¡bManualReset¡¡£ºÖ¸¶¨´´½¨Ò»¸öÊÖ¶¯ÖØÖÃʼþ»ò×Ô¶¯ÖØÖÃʼþ¡£Èç¹ûΪǰÕߣ¬±ØÐëµ÷Óá¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ResetEvent¡¡ÊÖ¶¯É趨״̬Ϊ·Ç¼¤»î״̬¡£·ñÔò£¬µ±Ò»¸öµÈ´ýÏ̱߳»Êͷźó£¬ÏµÍ³»á×Ô¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¶¯É趨¶ÔÏóµÄ״̬Ϊ·Ç¼¤»î״̬¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡o¡¡¡¡bInitialState¡¡£ºÖ¸¶¨¶ÔÏóµÄ³õʼ״̬¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡o¡¡¡¡lpName¡¡£ºÊ¼þ¶ÔÏóµÄÃû³Æ¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡£¨2¡¡£©OpenEvent¡¡¡¡

¡¡¡¡¡¡¡¡¡¡º¯Êý¡¡OpenEvent¡¡¿ÉÒÔ´ò¿ªÒ»¸ö´æÔÚµÄʼþ¶ÔÏó£¬ÔÊÐí¶à¸ö½ø³Ì´ò¿ªÍ¬Ò»¸ö¶ÔÏó¡£Èç¹ûµ÷¡¡

Óóɹ¦£¬·µ»Øʼþ¶ÔÏóµÄ¾ä±ú¡£·ñÔò·µ»Ø¿Õ¡£ËüµÄº¯ÊýÔ­ÐÍÈçÏ£º¡¡¡¡



¡¡¡¡¡¡¡¡¡¡HANDLE¡¡OpenEvent£¨¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡DWORD¡¡dwDesiredAccess£»¡¡¡¡¡¡¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡BOOL¡¡bInheritHandle£»¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPCTSTR¡¡lpName¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡



¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡o¡¡¡¡dwDesiredAccess¡¡£ºÖ¸¶¨ÈçºÎ²Ù×÷¶ÔÏ󡣡¡¡¡

¡¡¡¡¡¡¡¡¡¡o¡¡¡¡bInheritHandle¡¡£ºÖ¸¶¨·µ»ØµÄ¾ä±úÊÇ·ñ¿ÉÒÔ±»¼Ì³Ð¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡o¡¡¡¡lpName¡¡£ºÊ¼þ¶ÔÏóµÄÃû³Æ¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡£¨3¡¡£©SetEvent£¬ResetEvent¡¡ºÍ¡¡PulseEvent¡¡¡¡

¡¡¡¡¡¡¡¡¡¡Èç¹ûÐèÒªÐÞ¸Äʼþ¾ä±úµÄ״̬£¬¿ÉÒÔʹÓá¡¡¡SetEvent¡¢ResetEvent¡¡¡¡ºÍ¡¡¡¡PulseEvent¡¡¡£ÆäÖУ¬¡¡

SetEvent¡¡½«Ê¼þ¾ä±úµÄ״̬¸ÄΪ¼¤»î״̬£¬Èç¹û×Ô¶¯ÖØÖÃʼþ´¦ÓÚ¼¤»î״̬£¬ÔÚÂú×ãÁ˵ȴý¡¡

Ï̺߳ó£¬Ëü¿ÉÒÔ±»ÖØÖá¡¡£ÊÖ¶¯ÖØÖÃʼþ±ØÐëµ÷Óá¡ResetEvent¡¡º¯Êý½«Ê¼þ¶ÔÏóÖØÖÃΪ¼¤»î״̬¡£¡¡

PulseEvent¡¡¡¡¡¡º¯ÊýÓÃÀ´Ïòʼþ¾ä±ú·¢Ðźţ¬²¢ÔÚËùÓеĵȴýÏ̶߳¼±»Êͷź󣬽«Ê¼þ¾ä±úÖØÖá¡

Ϊδ¼¤»î״̬¡£ËüÃǵķµ»ØÖµÏàͬ£¬Èç¹ûµ÷Óóɹ¦£¬·µ»Ø·Ç¡¡0¡¡Öµ£¬·ñÔò·µ»Ø¡¡0¡¡¡£ËüÃǵĺ¯Êý¡¡

Ô­ÐÍÈçÏ£º¡¡¡¡



¡¡¡¡¡¡¡¡¡¡BOOL¡¡SetEvent£¨¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡HANDLE¡¡hEvent¡¡¡¡¡¡¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡



¡¡¡¡¡¡¡¡¡¡BOOL¡¡ResetEvent£¨¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡HANDLE¡¡hEvent¡¡¡¡¡¡¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡



¡¡¡¡¡¡¡¡¡¡BOOL¡¡PulseEvent£¨¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡HANDLE¡¡hEvent¡¡¡¡¡¡¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡



¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡o¡¡¡¡hEvent¡¡£ºÊ¼þ¶ÔÏóµÄ¾ä±ú¡£¡¡¡¡

¡¡¡¡¡¡¡¡¡¡Èç¹û²»ÔÙʹÓþä±ú£¬¿ÉÒÔµ÷Óá¡Win32API¡¡º¯Êý¡¡CloseHandle¡¡¹Ø±Õ¾ä±ú¡£º¯ÊýÔ­ÐÍÈçÏ£º¡¡¡¡



¡¡¡¡¡¡¡¡¡¡BOOL¡¡CloseHandle£¨¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡HANDLE¡¡hObject¡¡¡¡¡¡¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡



¡¡¡¤238¡¡¡¤¡¡¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡250¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡µÚ¡¡9¡¡Õ¡¡¡¡¡¡¡¡¶àÏ̡߳¡¡¡



¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡

¡¡¡¡¡¡¡¡o¡¡¡¡hObject¡¡£º¶ÔÏóµÄ¾ä±ú¡£¡¡¡¡



¡¡¡¡¡¡¡¡£¨4¡¡£©CEvent¡¡¡¡

¡¡¡¡¡¡¡¡Ê¼þ£¨Event¡¡£©ÔÚ¡¡MFC¡¡ÖеÄÏàÓ¦µÄÀàÊÇ¡¡CEvent¡¡¡£CEvent¡¡µÄ¹¹Ô캯ÊýĬÈÏ´´½¨Ò»¸ö×Ô¶¯ÖØ¡¡

ÖõÄʼþ£¬¶øÇÒ´¦ÓÚδ¼¤·¢×´Ì¬¡£ËüµÄ³ÉÔ±º¯Êý¼°Æä×÷ÓÃÈç±í¡¡9¡­6¡¡Ëùʾ¡£¡¡¡¡



¡¡¡¡¡¡¡¡±í¡¡9¡­6¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CEvent¡¡ÀàµÄ³ÉÔ±º¯Êý¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡º¯ÊýÃû³Æ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡×÷Óá¡¡¡

¡¡CEvent¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¹¹Ô캯Êý£¬¹¹Ôì¡¡CEvent¡¡¶ÔÏó¡¡¡¡

¡¡SetEvent¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Æô¶¯Ê¼þ¶ÔÏó£¬ÊͷŵȴýÏ̡߳¡¡¡

¡¡PulseEvent¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Æô¶¯Ê¼þ¶ÔÏó£¬ÊͷŵȴýỊ̈߳¬»òÕßÖØÖÃʼþ¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¶ÔÏóΪδ¼¤»î״̬¡¡¡¡

¡¡ResetEvent¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÉèÖÃʼþ¶ÔÏóΪδ¼¤»î״̬¡¡¡¡

¡¡Unlock¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÊÍ·Åʼþ¶ÔÏó¡¡¡¡



¡¡¡¡¡¡¡¡4¡¡£®»¥³âÆ÷£¨Mutex¡¡£©¡¡¡¡



¡¡¡¡¡¡¡¡»¥³âÆ÷µÄ¹¦ÄÜÓëÁÙ½çÇøÏàËÆ¡£Çø±ðÔÚÓÚ»¥³âÆ÷Ëù»¨·ÑµÄʱ¼ä±ÈÁÙ½çÇø¶àºÜ¶à£¬µ«ÊÇ»¥³â¡¡

Æ÷ÊǺËÐĶÔÏ󣨺óÃæ½éÉܵġ¡Event¡¡ºÍ¡¡Semaphore¡¡Ò²ÊǺËÐĶÔÏ󣩣¬¿ÉÒÔ¿ç½ø³ÌʹÓ㬶øÇҵȴý¡¡

Ò»¸ö±»ËøסµÄ»¥³âÆ÷¿ÉÒÔÉ趨¡¡¡¡TIMEOUT£¬²»»áÏñÁÙ½çÇøÄÇÑùÎÞ·¨µÃÖªÁÙ½çÇøµÄÇé¿ö£¬Ò»Ö±¡¡

µÈ´ý¡£¡¡¡¡

¡¡¡¡¡¡¡¡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¡¡¡¡¡¡¶ÔÏóµÄÃû³Æ¡£Èç¹ûÓÐͬÃûµÄ»¥³âÆ÷´æÔÚ£¬Èç¹ûΪ¿Õ£¬»
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨0£© ²È£¨1£©
δÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡