"i++"便不对,要用专门的api函数使i安全地加1,请看VC6编程内幕第4或5版或《深入浅出MFC》

解决方案 »

  1.   

    to sing:vc6
    to sol:应该可以啊,i压入了线程堆栈啊
      

  2.   

    你的代码有语法错误吧?
    不过不谈这个,把它看成类C++代码,我想输出结果不会唯一。
    1。创建挂起的线程,线程函数内用本地变量保存i, print("%d",localvar),最后再激活它们(1-100不会按顺序打的)
    2。用数组保存i值,再将相应的数组元素传到相应线程
    3。如果还不满意,那,那……, 只有给线程加开关让它们一个个执行了,这就不叫并行了嘛!
      

  3.   

    #include <windows.h> int WINAPI proc(int  i) 

      printf("%d ",i); 

    main() 

    HANDLE  hThread[101]; 
    DWORD dwThreadID; 
    int i; 
    hThread[0]=CreateThread(NULL,0,proc,(LPVOID)0,0,&dwThreadID); 
    for(i=1; i<=100; i++) 
     { 
        waitforsingleobject(hThread[i-1],INFINITE);
        hThread[0]=CreateThread(NULL,0,proc,(LPVOID)0,0,&dwThreadID); 
     } 
    } 怎么样????
      

  4.   

    for(i=1; i<=100; i++) 

        waitforsingleobject(hThread[i-1],INFINITE);
        hThread[0]=CreateThread(NULL,0,proc,(LPVOID)0,0,&dwThreadID); 

    应该是:
    for(i=1; i<=100; i++) 

        waitforsingleobject(hThread[i-1],INFINITE);
        hThread[i]=CreateThread(NULL,0,proc,(LPVOID)i,0,&dwThreadID); 

      

  5.   

    《VC++6技术内幕》Page 262:
    用::InterlockedIncrement((long*)&i);
    替代
    i++;
    试一试?