在控制台上开启两个线程,如何设置他们执行的先后顺序

在控制台下开启两个线程,怎么设置他们执行的先后顺序?
在控制台下开启两个线程,怎么设置他们执行的先后顺序?

在控制台下开启线程,不用MFC的afxbeginthread,要怎么做?改包含那个文件?

然后我想开启一个线程A后,等A执行完,再开始执行线程B,该怎么写让B线程等待A线程先执行呢?


求指导~

------解决方案--------------------
1.create事件: CreateEvent,
2.create线程A: _beginthreadex, 线程结束时,设置事件为有信号
3.create线程B:_beginthreadex, 等待事件的信号再执行
3.关闭所有句柄: CloseHandle
------解决方案--------------------
LS,其实不用设置事件
直接 开启线程A- WaitForSingleObject A - 开启B -... 
即可
------解决方案--------------------

#include "stdafx.h"
#include <windows.h>
#include <process.h>
#include <iostream>
using namespace std;

HANDLE hEvent;

unsigned int WINAPI AThread(PVOID pvParam) {
//To Do Begin
cout << "A Thread" << endl;
//To Do End
SetEvent(hEvent);
return 0;
}

unsigned int WINAPI BThread(PVOID pvParam) {
WaitForSingleObject(hEvent, INFINITE);
//To Do Begin
cout << "B Thread" << endl;
//To Do End
CloseHandle(hEvent);
return 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
hEvent = CreateEvent(NULL, TRUE, FALSE, TEXT("ABSynObj"));

_beginthreadex(NULL, 0, AThread, NULL, 0, NULL);
_beginthreadex(NULL, 0, BThread, NULL, 0, NULL);

return 0;
}

------解决方案--------------------
int _tmain(int argc, _TCHAR* argv[])
{
    hEvent = CreateEvent(NULL, TRUE, FALSE, TEXT("ABSynObj"));
 
    HANDLE hA = (HANDLE)_beginthreadex(NULL, 0, AThread, NULL, 0, NULL);

    WaitForSingleObject(hA, .....); //如果不想阻塞主线程,可把WaitForSingleObject放到B线程的开始的地方

    _beginthreadex(NULL, 0, BThread, NULL, 0, NULL);
 
    return 0;
}