编了一个简单的做试验都不行程序如下,只是用_beginthread创建一个线程并让它Sleep一会儿,在Console上输出一些东西,很简单的但结果却是什么都没有输出,为什么啊!?
#include <stdio.h>
#include <process.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>HANDLE hFinished;void ThreadProc(int *ID);void main(void){
int i=0;
hFinished=CreateMutex(NULL,TRUE,NULL);
_beginthread(ThreadProc,0,&i);
WaitForSingleObject(hFinished,INFINITE);
}void ThreadProc(int *ID){
printf("Thread %d starts",*ID);
srand(*ID);
Sleep(rand()*1000);
printf("Thread %d ends",*ID);
ReleaseMutex(hFinished);
}

解决方案 »

  1.   

    Sleep(rand()*1000);
    时间太长了!
      

  2.   

    我跟了一下, 不知为什么你的线程没进去。下面的是好用的:DWORD WINAPI  ThreadProc(void *pID);void main(void)
    {
        DWORD dwThreadId, dwThrdParam = 1; 
        HANDLE hThread;     hThread = CreateThread( 
            NULL,                        // no security attributes 
            0,                           // use default stack size  
            ThreadProc,                  // thread function 
            &dwThrdParam,                // argument to thread function 
            0,                           // use default creation flags 
            &dwThreadId);                // returns the thread identifier  int i=0;
    WaitForSingleObject(hThread,INFINITE);
    }DWORD WINAPI  ThreadProc(void *p)
    {
        int *ID = (int*)p ;
    printf("Thread %d starts",*ID);
    srand(*ID);
    Sleep( ( rand()%5 + 1 )*1000);
    printf("Thread %d ends",*ID);
        return 1 ;
    }
      

  3.   

    CreateMutex移到ThreadProc(int *ID)的开始部分试试?
      

  4.   

    啊,终于搞定了!谢谢各位朋友的帮忙,特别是rtdb(东临碣石)的例程。每次来CSDN都能有收获,真好!