...haha会多次输出,qiubai只输出一次,win7,vc6.0
发布网友
发布时间:20小时前
我来回答
共1个回答
热心网友
时间:2小时前
你应该建立两个进程, 这样才可以观察, 还有你的 haha 是在 main 函数里面, 只执行一次, 不会输出多次, qiubai, 在进程中, 但是 if (a>0) 也就是执行一次之后这个进程虽然没有关闭但是, 已经不可能进入输出的程序了.
#include <windows.h>
#include <stdio.h>
DWORD WINAPI myfun1(LPVOID lpParameter);
DWORD WINAPI myfun2(LPVOID lpParameter);
static HANDLE hmutex, hmutex2;
int main()
{
HANDLE h1;
h1=::CreateThread(NULL,0,myfun1,NULL,0,NULL);
HANDLE h2;
h2=::CreateThread(NULL,0,myfun2,NULL,0,NULL);
printf("Start:\n");
Sleep(5000);
::CloseHandle(h1);
::CloseHandle(h2);
return 0;
}
DWORD WINAPI myfun1(LPVOID lpParameter)
{
int a = 0;
while (1)
{
::WaitForSingleObject(hmutex,INFINITE);
a++;
printf("qiubai\n");
::ReleaseMutex(hmutex);
Sleep(200);
if(a > 15)
break;
}
return 0;
}
DWORD WINAPI myfun2(LPVOID lpParameter)
{
int b = 0;
while (1)
{
::WaitForSingleObject(hmutex2,INFINITE);
b++;
printf("haha\n");
::ReleaseMutex(hmutex2);
Sleep(300);
if(b > 10)
break;
}
return 0;
}