我写了两个全局线程:
UINT clas1(LPVOID pct)
UINT clas2(LPVOID pct)
当我调用时:
for(int i=0;i<1;i++){
AfxBeginThread(clas1,this); AfxBeginThread(clas2,this);}
居然要等clas1完成,才运行clas2,
怎样让它们随机运行?
救急啊

解决方案 »

  1.   


    可能你是在debug模式下调试,并且在1里设置了断点吧,把它断在那了,自然是下不去的了。
      

  2.   

    为什么要死循环。。sleep不行吗??
      

  3.   

    是顺序调用的,是AfxBeginThread(clas1,this)开始执行后立,调用函数即返回执行AfxBeginThread(clas2,this);
      

  4.   

    顺序调用是肯定的,但也绝不会需要第一个执行完啊。
    我也赞同可能是函数体太简单的缘故。同意在第一个线程中使用Sleep()来验证。
    验证办法可以是在线程函数首尾都用TRACE宏输出字符串标志,观察其输出顺序,当然也要注意让第一个线程函数执行久一点。
      

  5.   

    两个线程是否有互相等待的问题,如采用相同的信号量等。
    另外,象上一个所说,可以在线程中加入TRACE语句,并在线程中定义一个静态的可递增的变量,将这个递增变量在debug中显示出来,看是否有先后的次序,同时让两个线程不同步,试试看,想来应该没有问题。