若允许子线程执行多次后主线程再执行,又如何设置信号量的初值

若允许子线程执行多次后主线程再执行,又如何设置信号量的初值,这里的编译环境是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);