±êÌâ: C++´´½¨Ï̻߳¥³â¶ÔÏó [´òÓ¡±¾Ò³]

×÷Õß: liuyuxi    ʱ¼ä: 2015-1-11 00:38
±êÌâ: C++´´½¨Ï̻߳¥³â¶ÔÏó
#include <windows.h>//°üº¬Í·Îļþ
#include <stdio.h>




DWORD WINAPI myfun1(//ÉùÃ÷Ï̺߳¯Êý
  LPVOID lpParameter   
);
DWORD WINAPI myfun2(
  LPVOID lpParameter   
);
HANDLE hmutex;
int a=0;//¶¨ÒåÈ«¾Ö±äÁ¿a
main()
{
  hmutex=::CreateMutex(NULL,FALSE,NULL);//´´½¨»¥³â¶ÔÏó²¢·µ»ØÆä¾ä±ú
  HANDLE h1,h2;//¶¨ÒåÏ߳̾ä±ú
h1=::CreateThread(NULL,0,myfun1,NULL,0,NULL);//´´½¨Ïß³Ì1
printf("Ïß³Ì1¿ªÊ¼ÔËÐУ¡\r\n");
h2=::CreateThread(NULL,0,myfun2,NULL,0,NULL);//´´½¨Ïß³Ì2
printf("Ïß³Ì2¿ªÊ¼ÔËÐУ¡\r\n");
::CloseHandle(h1);//¹Ø±ÕÏ߳̾ä±ú¶ÔÏó
::CloseHandle(h2);
        ::Sleep(100000);//³ÌÐò˯Ãß10Ãë
return 0;


  }


DWORD WINAPI myfun1(LPVOID lpParameter) //Ï̺߳¯Êý1
{
   while(1)
   {
   ::WaitForSingleObject(hmutex,INFINITE);//ÇëÇóʼþ¶ÔÏó
         
   if(a<10000)
          {
     a+=1;//±äÁ¿×Ô¼Ó
     ::Sleep(1000);//Ïß³Ì˯Ãß1Ãë
             printf("Ïß³Ì1£º%d\r\n",a);
      ::ReleaseMutex(hmutex);
//ÊÍ·Å»¥³â¶ÔÏó¾ä±ú
          }
else
{
    ::ReleaseMutex(hmutex);//ÊÍ·Å»¥³â¶ÔÏó¾ä±ú
        break;//Ìø³öÑ­»·
         }


    }


    return 0;//Ïß³Ì
}


DWORD WINAPI myfun2(LPVOID lpParameter) //Ï̺߳¯Êý2
{
  while(1)
   {
::WaitForSingleObject(hmutex,INFINITE);//ÇëÇóʼþ¶ÔÏó


//ÉèÖÃʼþ¶ÔÏóΪÎÞÐźÅ״̬
if(a<10000)
{
     a+=1;
     ::Sleep(1000);
        printf("Ïß³Ì2£º%d\r\n",a);//Êä³ö±äÁ¿
        ::ReleaseMutex(hmutex);
//ÊÍ·Å»¥³â¶ÔÏó¾ä±ú
  }
else
{

::ReleaseMutex(hmutex);//ÊÍ·Å»¥³â¶ÔÏó¾ä±ú
    break;
//Ìø³öÑ­»·
   }


    }


    return 0;//Ïß³ÌÕý³£Í˳ö
}






»¶Ó­¹âÁÙ (http://www.51hei.com/bbs/) Powered by Discuz! X3.1