www.japanhotgirl:VC中创建线程的方法

来源:百度文库 编辑:偶看新闻 时间:2024/07/01 14:32:41
创建一个线程的方法:
创建线程使用CreateThread
The CreateThread function creates a thread to execute within the address space of the calling process.

HANDLE CreateThread(
                                       LPSECURITY_ATTRIBUTES lpThreadAttributes,  

                                         //指向SECURITY_ATTRIBUTES结构体的指针。
                                        
                                        DWORD dwStackSize,   //指定初始提交栈的大小

                                         LPTHREAD_START_ROUTINE lpStartAddress,
                                        //由线程执行,表示线程的起始地址,指定线程入口函数,
                                       //该入口函数的参数类型以及返回类型要与ThreadProc()函数声明的类型要保持一致
                                        LPVOID lpParameter,   //指定一个单独的值传递给线程
                                        DWORD dwCreationFlags, //指定控件线程创建的附加标记
                                        LPDWORD lpThreadId );    //指向一个用来接收线程的标识符变量

vc终止线程有三种方法:   
   1.线程可以在自身内部调用AfxEndThread()来终止自身的运行   
    
   2.可以在线程的外部调用BOOL    TerminateThread(    HANDLE    hThread,    DWORD    dwExitCode    )来强行终止一个线程的运行,   
   然后调用CloseHandle()函数释放线程所占用的堆栈   

   TerminateThread会有资源泄漏,不要万不得已,不要用这个函数
     DWORD code;
   if(GetExitCodeThread(MonitorComm,&code))   //MonitorComm 你创建的线程句柄
    if(code==STILL_ACTIVE)
    {
      TerminateThread(MonitorComm,0);
      CloseHandle(MonitorComm);
    }

    这样就安全了