每个线程必须拥有一个进入点函数。主线程的进入点函数是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。