<pre name="code" class="cpp">HANDLE thread_semaphore;
HANDLE main_handle ;
unsigned int WINAPI fun(LPVOID pm);
const int times = 2; //为了方便观察,循环次数设为3
int main()
{
main_handle= GetCurrentThread();
thread_semaphore = CreateSemaphore(NULL,1,1,NULL);
main_handle = CreateSemaphore(NULL,0,1,NULL);
HANDLE thread1 = (HANDLE)_beginthreadex(NULL,0,fun,NULL,0,NULL);
for(int j=1;j<=times;j++)
{
WaitForSingleObject(main_handle,INFINITE);
for(int i=1;i<=10;i++)
{
cout<<"主线程:"<<i<<endl;
}
ReleaseSemaphore(thread_semaphore,1,NULL);
}
CloseHandle(main_handle);
CloseHandle(thread_semaphore);
system("pause");
return 0;
}
unsigned int WINAPI fun(LPVOID pm)
{
for (int j=1;j<=times;j++)
{
WaitForSingleObject(thread_semaphore,INFINITE);
for(int i=1;i<=5;i++)
{
cout<<"子线程:"<<i<<endl;
}
ReleaseSemaphore(main_handle,1,NULL);
}
return 0;
}
子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。
最新推荐文章于 2022-05-03 17:06:01 发布