第六章 线程基础

(1)线程包括什么?

  • 一个是线程的内核对象
  • 一个线程栈,用于维护线程执行时所需要的函数参数和局部变量

  进程从来不执行任何东西,它只是一个线程的容器。 线程在进程的地址空间内执行代码和处理数据。

  每一个线程都有一个上下文,后者包含在线程内核对象中,它反应了执行时cpu寄存器的状态.

(2)终止运行线程

  • 线程函数结束返回(强烈推荐的)
  • 线程调用ExitThread杀死自己(尽量避免)
  • 同一进程或不同进程内的线程调用TerminateThread(尽量避免)
  • 包含线程的进程终止(避免)

(3)线程终止时做什么?

  • 线程拥有的所有用户对象句柄会被释放
  • 线程的推出代码由STILL_ACTIVE编程ExitThread或TerminateThread的代码
  • 线程内核对象变为触发状态
  • 如果线程是进程最后一个线程,进程也推出
  • 线程内核对象计数器减1

(4)线程创建和初始化

        

(5)用_beginthreadex 而不要用CreateThread来创建线程,因为CreateThread创建的线程在使用某些函数会出现内存泄露

(6)不要使用c/c++运行库函数_beginthread和_endthread而使用_beginthreadex和_endthreadex

原文地址:https://www.cnblogs.com/WillingCPP/p/3003014.html