以下情况,请问我该怎么修改呢?有了解的大佬么?

#include <windows.h> //包含头文件
#include <stdio.h>
DWORD WINAPI myfun1( //声明线程函数
LPVOID lpParameter  
);
const int stop=1; //stop 为一
const int go_on=2; //开始为2
int record=2;  
static HANDLE hmutex;
int a=0; //定义全局变量a
int main()
{  

HANDLE h1;  
//定义线程句柄

h1=::CreateThread(NULL,0,myfun1,NULL,0,NULL);
printf("haha\n");
//创建线程1

::CloseHandle(h1);  
Sleep(1000);//关闭线程句柄对象  
return 0;
}
DWORD WINAPI myfun1(LPVOID lpParameter) //线程函数1
{ while(1)
{
::WaitForSingleObject(hmutex,INFINITE); //请求事件对象

//变量自加

a++; //线程睡眠1秒
printf("qiubai\n");
::ReleaseMutex(hmutex);  
if(a>0)
break;//释放互斥对象句柄
}

return 0; //线程
}

一只斗牛犬
浏览 66回答 1
1回答

慕容708150

你应该建立两个进程,&nbsp;这样才可以观察,&nbsp;还有你的&nbsp;haha&nbsp;是在&nbsp;main&nbsp;函数里面,&nbsp;只执行一次,&nbsp;不会输出多次,&nbsp;qiubai,&nbsp;在进程中,&nbsp;但是&nbsp;if&nbsp;(a>0)&nbsp;也就是执行一次之后这个进程虽然没有关闭但是,&nbsp;已经不可能进入输出的程序了.#include <windows.h>#include <stdio.h>DWORD&nbsp;WINAPI myfun1(LPVOID&nbsp;lpParameter);DWORD&nbsp;WINAPI myfun2(LPVOID&nbsp;lpParameter);static&nbsp;HANDLE&nbsp;hmutex, hmutex2;int&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;h1;&nbsp;&nbsp;&nbsp;&nbsp;h1=::CreateThread(NULL,0,myfun1,NULL,0,NULL);&nbsp;&nbsp;&nbsp;&nbsp;HANDLE&nbsp;h2;&nbsp;&nbsp;&nbsp;&nbsp;h2=::CreateThread(NULL,0,myfun2,NULL,0,NULL);&nbsp;&nbsp;&nbsp;&nbsp;printf("Start:\n");&nbsp;&nbsp;&nbsp;&nbsp;Sleep(5000);&nbsp;&nbsp;&nbsp;&nbsp;::CloseHandle(h1);&nbsp;&nbsp;&nbsp;&nbsp;::CloseHandle(h2);&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}DWORD&nbsp;WINAPI myfun1(LPVOID&nbsp;lpParameter){&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;a = 0;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::WaitForSingleObject(hmutex,INFINITE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("qiubai\n");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::ReleaseMutex(hmutex);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(200);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(a > 15)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}DWORD&nbsp;WINAPI myfun2(LPVOID&nbsp;lpParameter){&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;b = 0;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(1)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::WaitForSingleObject(hmutex2,INFINITE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("haha\n");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::ReleaseMutex(hmutex2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sleep(300);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(b > 10)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}
打开App,查看更多内容
随时随地看视频慕课网APP