当线程函数属于某个类时,如果不为静态函数,那么该线程函数会有一个this指针参数,而操作系统只知道把参数推入新堆栈,因为当操作系统启动一个新线程时,它也为该线程产生一个专用的堆栈,操作系统必须在这一新堆栈中重新产生一个对你的线程函数的调用操作,这个操作当然是由操作系统调用,那么线程函数的类型一定要符合__cdecl 或 WINAPI(也就是__stdcall)。因此为了以一个成员函数启动一个线程,要么就是用静态成员函数,要么就是用C函数(而非C++成员函数),其实这两个方法本质是一样的,都需正确的建立“调用函数是所需堆栈”。但静态成员函数能够处理类的private/protected 静态成员变量。