Win32程序的执行单元(一)——多线程

Eddy 发布于2009-11-21 14:12:43 分类: 程序设计 已浏览loading 网友评论0条 我要评论

每个线程必须拥有一个进入点函数。主线程的进入点函数是main函数。若想在进程中创建一个辅助线程,则必须为其指定一个进入点函数,这个进入点函数称为线程函数。
线程函数定义:
DWORD WINAPI ThreadProc(LPVOID lpParam);

#include <windows.h>
#include <stdio.h>
//线程函数
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
 int i=0;
 while (i<=20)
 {
  printf("I come form a thread, i=%d\n",i++);
 }
 return 0;
}

int main(int argc, char* argv[])
{
 HANDLE hThread;
 DWORD ThreadID;
 //创建线程
 /*
 HANDLE CreateThread(
 LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
 DWORD dwStackSize,                        // initial stack size
 LPTHREAD_START_ROUTINE lpStartAddress,    // thread function
 LPVOID lpParameter,                       // thread argument
 DWORD dwCreationFlags,                    // creation option
 LPDWORD lpThreadId                        // thread identifier
 );
 */

 hThread = CreateThread(NULL,NULL,ThreadProc,NULL,0,&ThreadID);
 printf("The thread has been started, ThreadID is :%d\n",ThreadID);
 //等待线程执行完毕
 /*
 The WaitForSingleObject function returns when one of the following occurs:
 
   1.The specified object is in the signaled state.
   2.The time-out interval elapses.
 */
 WaitForSingleObject(hThread,INFINITE);
 //关闭线程句柄,释放资源
 CloseHandle(hThread);
 return 0;
}

线程内核对象:一个包含了线程状态信息的数据结构。

1.线程上下文CONTEXT

2.使用计数Usage Count
说明了此内核对象被打开的次数。当此值为0时,线程内核对象从内存中撤销。

3.暂停次数Suspend Count
用于指明线程的暂停次数。当此值为0时,线程处于可调度状态。

4.退出代码Exit Code
线程函数未返回时,此值为STILL_ACTIVE。线程运行结束后,系统自动将Exit Code设为线程函数的返回值。可以调用GetExitCodeThread函数得到此值。

5.是否受信Signaled

已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/program/126.html     欢迎订阅Eddy Blog

关于 Win32  多线程  的相关文章

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言