VCÓïÑÔ6.0³ÌÐòÉè¼Æ´ÓÈëÃŵ½¾«Í¨-µÚ54²¿·Ö
°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
¶àÓÚÒ»¸öµÄÏ̷߳ÃÎÊͬһ±äÁ¿¡£·µ»Ø²ÎÊý¡¡Addend¡¡Ö¸ÏòµÄ³õÖµ¡£ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡LONG¡¡InterlockedExchangeAdd¡¡£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPLONG¡¡volatile¡¡Addend¡¡£»¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LONG¡¡¡¡Value¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Addend¡¡£ºÖ¸ÏòÒª½øÐмӲÙ×÷µÄ±äÁ¿Ö¸Õë¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Value¡¡£ºÒª¸ø²ÎÊý¡¡Addend¡¡Ôö¼ÓµÄÖµ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨5¡¡£©InterlockedExchangePointer¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯Êý¡¡InterlockedExchangePointer¡¡½«Ä³¸ö¡¡32¡¡Î»±äÁ¿µÄÖµ¸ÄΪһ¸öÐÂÖµ¡¡¡£¸Ãº¯Êý²»ÔÊÐíͬһ¡¡
ʱ¼äÓжàÓÚÒ»¸öµÄÏ̷߳ÃÎÊͬһ±äÁ¿¡£·µ»Ø²ÎÊý¡¡Target¡¡Ö¸ÏòµÄ³õÖµ¡£ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡PVOID¡¡InterlockedExchangePointer£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡PVOID¡¡volatile¡¡*Target£»¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡PVOID¡¡¡¡Value¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Target¡¡£ºÖ¸ÏòÒª½øÐвÙ×÷µÄ±äÁ¿Ö¸Õë¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Value¡¡£ºÊý¡¡Addend¡¡µÄÐÂÖµ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨6¡¡£©InterlockedpareExchange¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯Êý¡¡InterlockedpareExchange¡¡¶ÔÖ¸¶¨µÄ¡¡32¡¡Î»±äÁ¿½øÐÐ×Ô¶¯±È½Ï£¬¸ù¾Ý±È½Ï½á¹û¾ö¶¨¡¡
ÊÇ·ñ½øÐн»»»¡£¸Ãº¯Êý²»ÔÊÐíͬһʱ¼äÓжàÓÚÒ»¸öµÄÏ̷߳ÃÎÊͬһ±äÁ¿¡£·µ»Ø²ÎÊý¡¡Destination¡¡
Ö¸ÏòµÄ³õÖµ¡£ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡LONG¡¡InterlockedpareExchange£¨¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPLONG¡¡volatile¡¡Destination£»¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LONG¡¡Exchange£»¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LONG¡¡perand¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Destination¡¡£ºÄ¿±êÖµµÄµØÖ·¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Exchange¡¡£ºÖ¸¶¨½»»»Öµ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡perand¡¡£ºÖ¸¶¨ÒªºÍÄ¿±êÖµ±È½ÏµÄÖµ¡£¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨7¡¡£©InterlockedpareExchangePointer¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯Êý¡¡InterlockedpareExchangePointer¡¡¶ÔÖ¸¶¨µÄ¡¡32¡¡Î»±äÁ¿½øÐÐ×Ô¶¯±È½Ï£¬È»ºó¾ö¶¨ÊÇ¡¡
·ñ½øÐн»»»¡£¸Ãº¯Êý²»ÔÊÐíͬһʱ¼äÓжàÓÚÒ»¸öµÄÏ̷߳ÃÎÊͬһ±äÁ¿¡£·µ»Ø²ÎÊý¡¡Destination¡¡
Ö¸ÏòµÄ³õÖµ¡£ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡PVOID¡¡InterlockedpareExchangePointer¡¡£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡PVOID¡¡volatile¡¡*Destination£»¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¤235¡¡¡¤¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡247¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
Visual¡¡C£«£«¡¡6¡£0¡¡³ÌÐòÉè¼Æ´ÓÈëÃŵ½¾«Í¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡PVOID¡¡Exchange£»¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡PVOID¡¡perand¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Destination¡¡£ºÖ¸ÏòÄ¿±êµØÖ·µÄÖ¸Õë¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡Exchange¡¡£ºÖ¸¶¨½»»»Öµ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡perand¡¡£ºÖ¸¶¨ÒªºÍÄ¿±êÖµ±È½ÏµÄÖµ¡£¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡»¥Ëø²Ù×÷µÄʹÓ÷½·¨·Ç³£¼òµ¥£¬Ö÷Ï̺߳͸¨ÖúÏ̶߳Ôͬһ¸öÈ«¾Ö±äÁ¿½øÐвÙ×÷£¬Í¨¹ýÀû¡¡
Óá¡InterlockedIncrement¡¡º¯Êý´ïµ½Í¬²½µÄÄ¿µÄ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡2¡¡£®ÁÙ½çÇø£¨Critical¡¡Section£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡ÁÙ½çÇøÊÇÒ»¶Î³ÌÐò´úÂ룬ÔÚÈκÎʱºò¶¼Ö»Äܱ»Ò»¸öÏß³ÌʹÓá£Èç¹ûÓжà¸öÏß³Ìͬʱ·ÃÎÊ¡¡
ÁÙ½çÇø£¬ÕâʱֻÄÜÓÐÒ»¸öÏ߳̽øÈ룬ÆäËûÏß³ÌÔòµÈ´ý£¬Ö±µ½ÁÙ½çÇø±»ÊÍ·Å¡£ÓëÆäËûͬ²½·½·¨¡¡
²»Í¬µÄÊÇ£¬ÁÙ½çÇøÖ»ÄÜÔÚµ¥¸ö½ø³ÌÄÚʹÓá£Ê¹ÓÃÁÙ½çÇøµÄʱºòÒª±ÜÃⳤʱ¼äËøסһ·Ý×ÊÔ´¡£¡¡
½øÈëÁÙ½çÇøºó±ØÐ뾡¿ìµØÀ뿪£¬ÊÍ·Å×ÊÔ´¡£Èç¹ûÊÇÖ÷Ị̈߳¨GUI¡¡Ị̈߳©Òª½øÈëÒ»¸öûÓб»ÊÍ¡¡
·ÅµÄÁÙ½çÇø£¬½«»á³öÏÖ´íÎ󡣡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨1£©InitializeCriticalSection¡¡¡¡
¡¡¡¡¡¡¡¡¡¡ÔÚʹÓÃÁÙ½çÇø֮ǰ£¬±ØÐëÏȽøÐгõʼ»¯¡£¿ÉÒÔµ÷Óá¡Win32¡¡API¡¡º¯Êý¡¡InitializeCriticalSection¡¡
³õʼ»¯Ò»¸öÁÙ½çÇø¶ÔÏó¡£ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡VOID¡¡InitializeCriticalSection£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPCRITICAL_SECTION¡¡lpCriticalSection¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡lpCriticalSection¡¡£ºÖ¸ÏòÁÙ½çÇø¶ÔÏóµÄÖ¸Õë¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨2¡¡£©DeleteCriticalSection¡¡¡¡
¡¡¡¡¡¡¡¡¡¡ÏàÓ¦µÄ£¬µ±ÐèÒªÊÍ·ÅÁÙ½çÇø×ÊԴʱ£¬¿ÉÒÔµ÷Óá¡Win32¡¡API¡¡º¯Êý¡¡DeleteCriticalSection¡¡À´Êµ¡¡
ÏÖ£¬ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡VOID¡¡DeleteCriticalSection£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPCRITICAL_SECTION¡¡lpCriticalSection¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡lpCriticalSection¡¡£ºÖ¸ÏòÁÙ½çÇø¶ÔÏóµÄÖ¸Õë¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨3¡¡£©EnterCriticalSection¡¡¡¡
¡¡¡¡¡¡¡¡¡¡Win32¡¡API¡¡º¯Êý¡¡EnterCriticalSection¡¡µÈ´ýÖ±µ½µÃµ½ÁÙ½çÇø¶ÔÏóµÄʹÓÃȨ£¬µ±µ÷ÓÃÏ̵߳õ½¡¡
ÁÙ½çÇø¶ÔÏóµÄʹÓÃȨʱ£¬º¯Êý·µ»Ø¡£ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡VOID¡¡EnterCriticalSection£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPCRITICAL_SECTION¡¡lpCriticalSection¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡
¡¡¡¤236¡¡¡¤¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡248¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡µÚ¡¡9¡¡Õ¡¡¡¡¡¡¡¡¶àÏ̡߳¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡lpCriticalSection¡¡£ºÖ¸ÏòÁÙ½çÇø¶ÔÏóµÄÖ¸Õë¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨4¡¡£©LeaveCriticalSection¡¡¡¡
¡¡¡¡¡¡¡¡¡¡Win32¡¡API¡¡º¯Êý¡¡LeaveCriticalSection¡¡ÓÃÀ´ÊÍ·ÅÁÙ½çÇøµÄËùÓÐȨ£¬ËüµÄº¯ÊýÔÐÍÈçÏ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡VOID¡¡LeaveCriticalSection£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡LPCRITICAL_SECTION¡¡lpCriticalSection¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£©£»¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýÖÐÖ÷Òª²ÎÊýµÄÒâÒåÈçÏ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡o¡¡¡¡lpCriticalSection¡¡£ºÖ¸ÏòÁÙ½çÇø¶ÔÏóµÄÖ¸Õë¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡µ±ËÙ¶ÈÒªÇó½Ï¸ß£¬²¢ÇÒ½ø³Ì±ß½çµÄ×ÊÔ´²»»á±»½»²æʹÓõÄʱºò£¬Í¨³£²ÉÓá¡Critical¡¡Section¡¡
Ìæ´ú¡¡¡¡Mutexes¡¡¡£ÁÙ½çÇø²»ÊÇÒ»¸öºËÐĶÔÏó£¬ÎÞ·¨»ñÖª½øÈëÁÙ½çÇøµÄÏ̵߳Ä״̬£¬Èç¹û½øÈëÁÙ¡¡
½çÇøµÄÏ̴߳¦ÓÚËÀËø״̬£¬Ã»ÓÐÊÍ·ÅÁÙ½ç×ÊÔ´£¬ÏµÍ³ÎÞ·¨»ñÖª£¬¶øÇÒûÓа취ÊͷŸÃÁÙ½ç×Ê¡¡
Ô´¡£Õâ¸öȱµãÔÚ»¥³âÆ÷£¨Mutex¡¡£©Öеõ½ÁËÃÖ²¹¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨5¡¡£©CCriticalSection¡¡¡¡
¡¡¡¡¡¡¡¡¡¡CcriticalSection¡¡ÊÇÁÙ½çÇøÔÚ¡¡MFC¡¡ÖеÄÏàÓ¦µÄÀà¡£ËüµÄ³ÉÔ±º¯ÊýÈç±í¡¡9¡5¡¡Ëùʾ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡±í¡¡9¡5¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CEvent¡¡ÀàµÄ³ÉÔ±º¯Êý¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡º¯ÊýÃû³Æ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡×÷Óá¡¡¡
¡¡CCriticalSection¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¹¹Ô캯Êý£¬¹¹Ôì¡¡CCriticalSection¡¡¶ÔÏó¡¡¡¡
¡¡Lock¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡½øÈëÁÙ½çÇø¡¡¡¡
¡¡UnLock¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡À뿪ÁÙ½çÇø¡¡¡¡
¡¡¡¡¡¡¡¡¡¡3¡¡£®Ê¼þ£¨Event¡¡£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡Ê¼þ£¨Event¡¡£©ÊÇÓÉ¡¡Windows¡¡²Ù×÷ϵͳ¹ÜÀíµÄͬ²½¶ÔÏ󡣿ÉÒÔÓÃÓÚ½ø³Ì»òÏ̵߳Äͬ²½¡£Ò»¡¡
¸öʼþ±»´´½¨ºó£¬Ö»Óм¤·¢×´Ì¬ºÍδ¼¤·¢×´Ì¬Á½ÖÖ״̬£¬Ò²³ÆΪ·¢ÐźÅ״̬ºÍδ·¢ÐźÅ״̬¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡Ê¼þ°üÀ¨ÊÖ¶¯ÖØÖÃʼþºÍ×Ô¶¯ÖØÖÃʼþÁ½ÖÖÀàÐÍ¡£ÊÖ¶¯ÖØÖÃʼþ±»ÉèÖÃΪ¼¤·¢×´Ì¬ºó£¬¡¡
»á»½ÐÑËùÓеȴýµÄỊ̈߳¬¶øÇÒÒ»Ö±±£³Ö¼¤·¢×´Ì¬£¬Ö±µ½³ÌÐòÖØаÑËüÉèÖÃΪδ¼¤·¢×´Ì¬¡£×Ô¡¡
¶¯ÖØÖÃʼþ±»ÉèÖÃΪ¼¤·¢×´Ì¬ºó£¬»á»½ÐÑÒ»¸öµÈ´ýÖеÄỊ̈߳¬È»ºó×Ô¶¯»Ö¸´ÎªÎ´¼¤·¢×´Ì¬¡£¡¡
ËùÒÔÓÃ×Ô¶¯ÖØÖÃʼþÀ´Í¬²½Á½¸öÏ̱߳ȽÏÀíÏë¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡£¨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¡¡Ìá¹