µ±Ç°Î»ÖãºÊ×Ò³ > OS½ø³Ìͬ²½ÊµÑ鱨¸æ
} WaitForSingleObject(hMutex, INFINITE) ; i--; ReleaseMutex(hMutex) ; } return j; int main() { DWORD id1,id2; HANDLE hThread[2] ; hMutex = CreateMutex( NULL, // ȱʡµÄ°²È«ÊôÐÔ£¬¾ä±ú²»±»×Ó½ø³Ì¼Ì³Ð FALSE, NULL) ; // Ö»³õʼ»¯£¬²»ÓµÓÐ // ÄäÃûµÄ hThread[0] = CreateThread(0,0,fun1,0,0,&id1); hThread[1] = CreateThread(0,0,fun2,0,0,&id2); WaitForMultipleObjects(2,hThread,1,INFINITE); cout<<\ ReleaseMutex(hMutex) ; CloseHandle(hMutex) ; } return 0; ³ÌÐò4_4£º # include
ʵÑéС½á ʵÑé4 £¨Ò»£© ÿ¸öʵÑé¶¼ÄÜÈÏÈÏÕæÕæÍê³É£¬´ÓʵÑéÖÐÌå»áµ½Í¬²½»úÖÆµÄÖØÒªÐÔ¡£Äܹ»ÈÏÕæÑ§Ï°APIº¯Êý£¬²¢½«×Ô¼ºËùѧµÄ֪ʶÔËÓõ½ÊµÑéÖС£ £¨¶þ£© ¶ÔÓÚһЩЧÂÊÒªÇóºÜ¸ßµÄ³ÌÐò£¬²»ÊÊÒËÓÃWindows API£¬¶øÓ¦¸Ã×Ô¼º±àдЧÂʽϸߵÄÏß³Ìͬ²½Ëã·¨£¬¾ÍĿǰ¶øÑÔ£¬Õ⻹ÊÇÎұȽÏǷȱµÄ£¬¼±ÐèÒª¶ÍÁ¶µÄÄÜÁ¦¡£ £¨Èý£© ͨ¹ýÕâ´ÎʵÑ飬Ìå»áµ½Í¬²½»úÖÆµÄÖØÒªÐÔ£¬ÕÆÎÕÁËÓйØÏß³Ìͬ²½µÄһЩ֪ʶ£ºÁ½¸ö»ò¶à¸öÏß³ÌÕùÏàÖ´ÐÐͬһ¶Î´úÂë»ò·ÃÎÊͬһ×ÊÔ´µÄÏÖÏó³ÆÎª¾ºÕù£»¿ÉÄÜÔì³É¾ºÕùµÄ¹²Ïí´úÂë¶Î»ò×ÊÔ´¾Í±»³ÆÎªÁÙ½çÇø£»ÔÚÈκÎʱ¿Ì¶¼ÄÜÓÐÒ»¸öÏß³ÌÔÚÁÙ½çÇøÖеÄÏÖÏó±»³ÆÎª»¥³â¡£ ʵÑé3 ͨ¹ý±¾´ÎʵÑ飬Á˽âÁËÔÚWindowsϵͳÖУ¬½ø³ÌÊÇ×ÊÔ´µÄÓµÓÐÕߣ¬Ïß³ÌÊÇϵͳµ÷¶ÈµÄµ¥Î»¡£½ø³Ì´´½¨ºó£¬ÆäÖ÷Ïß³ÌÒ²Ëæ¼´±»´´½¨¡£Á˽âÁËÏ̵߳ÄÒýÈëÊÇΪÁ˼õÉÙ³ÌÐò²¢·¢Ö´ÐÐʱËù¸¶³öµÄʱ¿Õ¿ªÏú£¬Ê¹µÃ²¢·¢Á£¶È¸üϸ£¬²¢·¢¸üºÃ¡£Õâ¸ö˼·Ï£¬¡°¶ÀÁ¢·ÖÅä×ÊÔ´¡±µÄÈÎÎñÈÔÓɽø³ÌÍê³É£¬×÷Ϊϵͳ×ÊÔ´±£»¤ºÍ·ÖÅäµÄ»ù±¾µ¥Î»£¬¶ø¡°±»µ÷¶È·ÖÅÉÖ´ÐС±µÄÈÎÎñ±»½»¸¶¸øÏ̵߳ÄʵÌåÍê³É£¬Ïß³Ì×÷Ϊϵͳµ÷¶ÈºÍ·ÖÅäµÄ»ù±¾µ¥Î»£¬»á±»Æµ·±µÄµ÷¶ÈºÍÇл»¡£ Óë½ø³ÌÏà±È£¬Ï̵߳ÄÓеãΪ£º ¿ìËÙÏß³ÌÇл»£¬Í¬Ò»¸ö½ø³ÌÖеĶàÏß³ÌÇл»£¬Ö»ÐèÒª¸Ä±ä¶ÑÕ»ºÍ¼Ä´æÆ÷£¬µØÖ·¿Õ¼ä²»Óñ䡣 ͨÐÅÒ×ÓÚʵÏÖ¡£×Ô¶¯¹²Ïí½ø³ÌµÄÄÚ´æºÍÎļþ£¬Ï߳̿ÉÒÔ×ÔÓÉ·ÃÎÊÈ«¾Ö±äÁ¿£¬Í¨ÐÅÊ®·Ö·½±ã£¬¶øÇÒ²»ÐèҪͨ¹ýÄÚºË ¼õÉÙ¹ÜÀí¿ªÏú¡£Ï̴߳´½¨ºÍ³·ÏúµÄ¹¤×÷±È½ø³ÌÉÙ¡£ ²¢·¢³Ì¶È¸ß¡£¶àÏß³ÌÊʺϲ¢Ðй¤×÷ ±¸×¢£º
¹²·ÖÏí92ƪÏà¹ØÎĵµ