for(int i=0;i hThreads[i]=CreateThread(NULL,0,Producer,NULL,0,&producerID[i]); } /*---------------------------´´ ½¨ Éú ²ú Õß Ïß ³Ì ½á Êø } if(hThreads[i]==NULL) g_continue=0; -----------------------------*/ /*--------------------------------------------------------*/ void createCT()//´´½¨Ïû·ÑÕßÏß³Ì { hThreads[PRODUCERS_COUNT+j]=CreateThread(NULL,0,Consumer,NULL,0,& for (int j=0;j ´´ ½¨ Ïû ·Ñ Õß Ïß ³Ì ¿ª ʼ consumerID[j]); } /*--------------------------------------------------------*/ /*----------------------------------------------------------------*/ Ö÷ º¯ Êý ¿ª ʼ ´´ ½¨ Ïû ·Ñ Õß Ïß ³Ì ½á Êø } if (hThreads[j]==NULL) g_continue=0; void main() { //´´½¨»¥³âÐźÅÁ¿ g_hMutex=CreateMutex(NULL,FALSE,NULL); //´´½¨×ÊÔ´ÐźÅÁ¿ g_hFullSemaphore=CreateSemaphore(NULL,SIZE_OF_BUFFER-1,SIZE_OF _BUFFER-1,NULL); ); //´´½¨Éú²úÕßÏß³Ì createPT(); //´´½¨Ïû·ÑÕßÏß³Ì createCT(); g_hEmptySemaphore=CreateSemaphore(NULL,0,SIZE_OF_BUFFER-1,NULL //²»°´»Ø³µ¼üµÄ»°³ÌÐò»áÒ»Ö±ÔËÐÐÏÂÈ¥ } /*----------------------------------------------------------------*/ ËÄ¡¢ ×ܽ᣺ Ö÷ º¯ Êý ½á Êø while(g_continue) //°´»Ø³µ¼üÖÕÖ¹³ÌÐò if(getchar()) g_continue = 0; Éú²úÕß-Ïû·ÑÕßÎÊÌâÊÇÒ»¸ö¾µäµÄ½ø³Ìͬ²½ÎÊÌ⣬¸ÃÎÊÌâ×îÔçÓÉDijkstraÌá³ö£¬ÓÃÒÔÑÝʾËûÌá³öµÄÐźÅÁ¿»úÖÆ¡£ÔÚͬһ¸ö½ø³ÌµØÖ·¿Õ¼äÄÚÖ´ÐеÄÁ½¸öÏ̡߳£Éú²úÕßÏß³ÌÉú²úÎïÆ·£¬È»ºó½«ÎïÆ··ÅÖÃÔÚÒ»¸ö¿Õ»º³åÇøÖй©Ïû·ÑÕßÏß³ÌÏû·Ñ¡£Ïû·ÑÕßÏ̴߳ӻº³åÇøÖлñµÃÎïÆ·£¬È»ºóÊÍ·Å»º³åÇø¡£µ±Éú²úÕßÏß³ÌÉú²úÎïÆ·Ê±£¬Èç¹ûûÓпջº³åÇø¿ÉÓã¬ÄÇôÉú²úÕßÏ̱߳ØÐëµÈ´ýÏû·ÑÕßÏß³ÌÊͷųöÒ»¸ö¿Õ»º³åÇø¡£µ±Ïû·ÑÕßÏß³ÌÏû·ÑÎïÆ·Ê±£¬Èç¹ûûÓÐÂúµÄ»º³åÇø£¬ÄÇôÏû·ÑÕßÏ߳̽«±»×èÈû£¬Ö±µ½ÐµÄÎïÆ·±»Éú²ú³öÀ´¡£