线程
#线程组成:内核对象,线程堆栈
#线程和进程的区别
>子进程和父进程有不同的代码和数据空间
>多个线程共享数据空间,每个线程有独立的执行堆栈和程序计数器
>多进程是为了节约时间,充分利用CPU。多线程视情况而定
>进程使用的资源比线程多得多
#线程创建
每个线程都需要有一个进入点函数,一个程序的主线程的进入点函数必须是main , wmain , WinMain或 wWinMain等。
如果要在进程中创建一个辅助线程,则需要定义一个类似这样的进入点函数:
DWORD WINAPI ThreadFunc (PVOID pvParam )
{
DWORD dwResult = 0 ;
...
return (dwResult)
}
#线程函数特征
>主线程的进入点函数必须是main , wmain , WinMain或 wWinMain等,普通线程则无要求。
>线程函数必须返回一个值,作为退出码。
>线程函数必须尽可能使用函数参数和局部变量,避免使用全局变量和静态变量。
#创建线程 CreateThread
#线程终止方法
>线程函数返回
>调用ExitThread函数(不推荐)
>同一个进程或另一个进程中的线程调用TermiateThread函数
>在进程终止时撤销线程,ExitProcess 和 TerminateProcess 可以用来终止线程的运行
#线程挂起和恢复
>创建线程时,可以传入标识参数令线程挂起
>调用SupendThread函数可以挂起线程
>调用ResumeThread函数可以恢复线程
#线程优先级
>一个线程首次被创建时,优先级等同于所属进程优先级
>SetThreadPriority函数可以改变线程相对所属进程的优先级
>线程优先级 = 进程基本优先级 + 线程相对优先级
>进程基本优先级:实时,高,高于正常,正常,低于正常,空闲
#线程休眠
Sleep()