#include <Windows.h>
#include <iostream>
#include <process.h>
UINT __stdcall ThreadFun(LPVOID lparam);
CRITICAL_SECTION gVar;
int gMain = 0;
int gThread = 0;
int main()
{
InitializeCriticalSection(&gVar);
HANDLE m_Thread = (HANDLE)_beginthreadex(NULL,0,ThreadFun,NULL,0,NULL);
Sleep(5); //为了先执行子线程
int imain = 0;
while(imain < 50)
{
EnterCriticalSection(&gVar);
while (gMain < 100)
{
printf("主线程运行第 %d 次!",gMain);
gMain++;
}
gMain = 0;
LeaveCriticalSection(&gVar);
imain++;
Sleep(10);
}
return 0;
}
UINT __stdcall ThreadFun(LPVOID lparam)
{
int ichild = 0;
while(ichild < 10)
{
EnterCriticalSection(&gVar);
while(gThread < 10)
{
printf("子线程运行第 %d 次!",gThread);
gThread++;
}
gThread = 0;
ichild++;
LeaveCriticalSection(&gVar);
Sleep(10);
}
return 0;
}
子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。
最新推荐文章于 2021-05-29 02:47:52 发布