±êÌâ:
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