Windows核心编程-线程基础
2018-01-28 15:41
197 查看
Windows创建的线程的函数是:
HANDLE CreateThread(
PSECURITY_ATTRIBUTES psa,
DOWRD cbStackSize,
PTHREAD_START_ROUTINE pfnStartAddr,
PVOID pvParam,
DWORD dwCreateFlag,
PDWORD pdwThreadID);
psa是指向结构体SECURITY_ATTRIBUTES结构体的指针,使用默认安全属性的话,使用NULL即可。
cbStackSize是指定线程栈使用多少地址空间。
pfnStartAddr 和 pvParam分别是函数的地址和对应的参数。
dwCreateFlag指定额外的标志来控制线程的创建。
pdwTheadID代表系统分配给新线程的ID。
下面是退出线程的函数。
VOID ExitThread( DWORD dwExitCode )
BOOL TerminateThread( HANDLE hThread, DWORD dwExitCode);//需要知道线程的句柄
线程终止时,会发生以下这些事情:
1、线程拥有的所有用户对象句柄会被释放;
2、线程的退出代码由STILL_ACTIVE变为传给ExitThread和TerminateThead的代码;
3、线程的内核对象状态变为触发;
4、如果线程是进程中最后一个活动线程,系统认为进程也终止了;
5、线程内核对象使用计数递减1。
创建线程时,一定不要调用系统提供的CreateThread函数,要调用运行库函数_beginthreadex,该函数原型如下:
unsigned long _beginthreadex(
void *security,
unsigned stacksize,
unsigned (*stack_address)(void*),
void *arglist,
unsigned initflag,
unsigned *thrdaddr
);
该函数用_tiddata结构体保存线程执行需要的信息包括函数和参数等,内部调用CreateThead函数,传入的函数是_threadstartex函数,该函数内部调用了_callthreadstartex函数,并提供结构和异常处理,在_callthreadstartex函数中,调用了_endthreadex函数。
HANDLE CreateThread(
PSECURITY_ATTRIBUTES psa,
DOWRD cbStackSize,
PTHREAD_START_ROUTINE pfnStartAddr,
PVOID pvParam,
DWORD dwCreateFlag,
PDWORD pdwThreadID);
psa是指向结构体SECURITY_ATTRIBUTES结构体的指针,使用默认安全属性的话,使用NULL即可。
cbStackSize是指定线程栈使用多少地址空间。
pfnStartAddr 和 pvParam分别是函数的地址和对应的参数。
dwCreateFlag指定额外的标志来控制线程的创建。
pdwTheadID代表系统分配给新线程的ID。
下面是退出线程的函数。
VOID ExitThread( DWORD dwExitCode )
BOOL TerminateThread( HANDLE hThread, DWORD dwExitCode);//需要知道线程的句柄
线程终止时,会发生以下这些事情:
1、线程拥有的所有用户对象句柄会被释放;
2、线程的退出代码由STILL_ACTIVE变为传给ExitThread和TerminateThead的代码;
3、线程的内核对象状态变为触发;
4、如果线程是进程中最后一个活动线程,系统认为进程也终止了;
5、线程内核对象使用计数递减1。
创建线程时,一定不要调用系统提供的CreateThread函数,要调用运行库函数_beginthreadex,该函数原型如下:
unsigned long _beginthreadex(
void *security,
unsigned stacksize,
unsigned (*stack_address)(void*),
void *arglist,
unsigned initflag,
unsigned *thrdaddr
);
该函数用_tiddata结构体保存线程执行需要的信息包括函数和参数等,内部调用CreateThead函数,传入的函数是_threadstartex函数,该函数内部调用了_callthreadstartex函数,并提供结构和异常处理,在_callthreadstartex函数中,调用了_endthreadex函数。
相关文章推荐
- 【windows核心编程】 第六章 线程基础
- Windows核心编程——第6章 线程基础
- Windows核心编程 线程基础 线程调度、优先级、关联性 用户模式下的线程同步
- 《Windows核心编程》学习——线程基础
- 《Windows核心编程》读书笔记六 线程基础
- Windows核心编程 第六章 线程基础知识 (上)
- Windows核心编程 第六章 线程基础知识 (下)
- 浅尝《Windows核心编程》之线程基础
- WINDOWS核心编程——线程基础
- 《Windows核心编程》读书心得——线程(线程基础)(4)
- Windows核心编程(五)线程基础
- 《Windows核心编程》——六 线程基础
- Windows核心编程 -- 线程基础
- Windows核心编程:线程基础
- 【Windows核心编程】Windows核心编程 -- 线程基础
- 《Windows核心编程》之“线程基础”
- 【windows核心编程】 第六章 线程基础
- 摘自(windows核心编程之线程基础)
- Windows核心编程 第6章线程基础
- 《CLR via C#》笔记——线程基础