请问两个有关问题-关于多线程

请教两个问题--关于多线程
1.两个线程A和B,A执行时B在执行则让B挂起,A执行完成后再继续执行B;如何高效地实现?

2.两个线程当中有一个是非定时性的,间隙很长的线程,于是就有个问题,如果在线程回调函数里头调用AfxEndThread,有可能这时候B正在等待中,并不能够立即退出,那就有可能会让主对话框退出时线程仍然在等待而没有立即退出?有没有好点儿的办法能够让线程立即退出,不进行无用的等待呢?

------解决方案--------------------
B: waitforsingleobject(hevt)
A: setevent(hevt)
------解决方案--------------------
1.两个线程A和B,A执行时B在执行则让B挂起,A执行完成后再继续执行B;如何高效地实现?
线程同步啊

2.两个线程当中有一个是非定时性的,间隙很长的线程,于是就有个问题,如果在线程回调函数里头调用AfxEndThread,有可能这时候B正在等待中,并不能够立即退出,那就有可能会让主对话框退出时线程仍然在等待而没有立即退出?有没有好点儿的办法能够让线程立即退出,不进行无用的等待呢?
如果A是主线程,A退出了,B也就结束了,如果A不是主线程,和B一样是子线程的话,要求A退出的时候B也退出,如果A退出了,B还在等待事件,仍然可以用同步机制解决,如果B是因为其它与A不相关的原因等待,只有强制结束线程B了,TerminateThread
------解决方案--------------------
探讨
1.两个线程A和B,A执行时B在执行则让B挂起,A执行完成后再继续执行B;如何高效地实现?

2.两个线程当中有一个是非定时性的,间隙很长的线程,于是就有个问题,如果在线程回调函数里头调用AfxEndThread,有可能这时候B正在等待中,并不能够立即退出,那就有可能会让主对话框退出时线程仍然在等待而没有立即退出?有没有好点儿的办法能够让线程立即退出,不进行无用的等待呢?

------解决方案--------------------
用信号量 terminate