(1)线程包括什么?
- 一个是线程的内核对象
- 一个线程栈,用于维护线程执行时所需要的函数参数和局部变量
进程从来不执行任何东西,它只是一个线程的容器。 线程在进程的地址空间内执行代码和处理数据。
每一个线程都有一个上下文,后者包含在线程内核对象中,它反应了执行时cpu寄存器的状态.
(2)终止运行线程
- 线程函数结束返回(强烈推荐的)
- 线程调用ExitThread杀死自己(尽量避免)
- 同一进程或不同进程内的线程调用TerminateThread(尽量避免)
- 包含线程的进程终止(避免)
(3)线程终止时做什么?
- 线程拥有的所有用户对象句柄会被释放
- 线程的推出代码由STILL_ACTIVE编程ExitThread或TerminateThread的代码
- 线程内核对象变为触发状态
- 如果线程是进程最后一个线程,进程也推出
- 线程内核对象计数器减1
(4)线程创建和初始化
(5)用_beginthreadex 而不要用CreateThread来创建线程,因为CreateThread创建的线程在使用某些函数会出现内存泄露
(6)不要使用c/c++运行库函数_beginthread和_endthread而使用_beginthreadex和_endthreadex