for(int u=0;u<m_threads;u++)
{
iPra.i=u;
AfxBeginThread(ThreadDown,&iPra);
// UINT ThreadDown(LPVOID iP)为全局函数ThreadDown的定义 }
//我在全局函数ThreadDown中设置了显示传入的iPra.i的对话框,结果当m_threads设置为5的时候,显示1,2,3,4,4。0不显示,4重复显示了。我把u=0改成u=2,m_threads设置为其他值也是这样情况:第一个线程没有显示,最后一个线程重复显示了,为什么?怎么解决?谢谢!
{
iPra.i=u;
AfxBeginThread(ThreadDown,&iPra);
// UINT ThreadDown(LPVOID iP)为全局函数ThreadDown的定义 }
//我在全局函数ThreadDown中设置了显示传入的iPra.i的对话框,结果当m_threads设置为5的时候,显示1,2,3,4,4。0不显示,4重复显示了。我把u=0改成u=2,m_threads设置为其他值也是这样情况:第一个线程没有显示,最后一个线程重复显示了,为什么?怎么解决?谢谢!
int u=0;
CCriticalSection cs;
......
while (u<3)
{
cs.Lock();
AfxBeginThread(ThreadDown,NULL);
}
全局函数ThreadDown的定义如下
UINT ThreadDown(LPVOID iP)
{
int i=u;
u++;
cs.Unlock();
CString iname;
iname.Format("%d",i);
AfxMessageBox(iname);
....
}
应该想让它分别显示0,1,2。结果显示0,1,2,3。(对顺序不要求)
请问怎么解决?