每个线程都必须有一个进入点函数,线程从这个进入点开始运行。主线程的进入点函数是main,如果想在线程中创建另一个辅助线程,则必须为该辅助线程创建一个进入点函数,这个函数被称为线程函数。
线程函数的定义如下:
DWORD WINAPI ThreadProc(LPVOID lpParam); //线程函数名称可以是任意的
WINAPI 是一个宏,在windef.h 文件中有声明:
#define WINAPI _stdcall
_stdcall是新标准c/c++函数的调用方法。从底层上说,使用这种调用方法参数的进栈顺序和标准c调用(_cdecl方法)是一样的,都是从左到右。但是,_stdcall采用自动清栈的方式,而_cdecl采用的是手工清栈方式。windows规定,凡是由它来负责调用的函数都必须定义为_stdcall类型。
TreadProc是一个回调函数,即由windows系统来负责调用的函数,所以此类型应定义为_stdcall类型。注意:::如果没有显示说明的话,函数调用方法是_cdecl。