若允许子线程执行多次后主线程再执行,又如何设置信号量的初值,这里的编译环境是VC6,使用C++语言,应该怎么设置信号值才能使子线程多次执行之后再唤醒主线程。
信号量 好像是限制同时运行的线程个数的。要想运行多次唤醒主线程,感觉需要还是个计数的变量
在我看来 如果是卡住主线程,子线程运行N次,这种需求。等待子线程结束似乎更好些。
子线程函数 N 是次数
DWORD WINAPI XXDlg::Thread_zi(LPVOID phtread);
{
XXDlg* dlg = (XXDlg*)phtread;
while (dlg->N--)
{
//
......
}
return 0;
}
主线程里:
// 创建子线程
N = 10;// 子线程循环10次
HANDLE hzi = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)&Thread_zi,this,NULL,NULL);
// 卡死在这句 等子线程完全退出
WaitForSingleObject(hzi ,INFINITE);
HANDLE m_hExit;
m_hExit= CreateEvent( NULL, TRUE, FALSE, NULL );
WaitForSingleObject(m_hExit ,INFINITE);