【线程对象与线程】
线程从概念上讲就是一个执行的线索,原则上讲任何一段程序代码段都可以成为
一个线程,但是不同都操作系统的线程模型是不一样的,有的系统将线程作为用
户级来处理,真正的调度和资源分配单位是进程,而有的系统则将线程作为基本
的调度和资源分配单位。具体在windows这个OS上面,它的线程模型是由一个函数
入口指针和一个入口参数确定的,可以笼统的讲:在windows(95以上)系统中线
程就是一个运行着的函数。这个函数的原型生命如下:
DWORD WINAPI threadFunction(LPVOID);
创建线程的方法可以有两种:一种是使用API函数CreateThread,另一种是使用运
行库函数_beginthreadex(在process.h中声明)。两者的参数和效果是一样的,都
是给出一个函数的地址,入口参数,用于返回线程ID的指针,堆栈大小以及安全
属性(后面两个一般不特殊制定)。
下面看看线程对象是如何抽象线程的。
首先,有一个与线程对象在一起的全局函数:
DWORD WINAPI doRunWorking( LPVOID lpParm);
这个全局函数将用来创建真正的线程。
然后,从线程对象的构造函数开始,除了做必要的准备工作以外主要的工作就是
创建线程,以doRunWorking作为函数地址,以对象的this指针做参数创建线程,
并且线程的初始状态是CREATE_SUSPENDED