A01-03 线程的创建和启动
(1)定义一个MyTask类,并继承于OS_Thread,重写线程主函数Routine()
(2)使用这个类
//注:在大多数操作系统上,线程的创建和启动是一个连续的动作
MyTask task;
task.Run(); //创建并启动线程
//task.Routine(); 这是函数的调用,是一个
打开资源监视器,观察test1_1.exe
当程序开始运行,进入main()时,线程数为1;
当程序运行完a.Run()时,线程数为2;
当程序运行完b.Run()时,线程数为3。
OS会根据要求,创建一个线程实体来运行,线程的主函数就是Routine();
线程的两种语境:
①OS_Thread:是一个C++类(对象),封装了线程相关的数据和操作。
②线程实体:由操作系统创建的实体,通常我们说的线程就是指的这个实体,它是一个运行的概念。
MyTask task; //这里只是创建了一个c++的对象
task.Run(); //这里线程才被真正的创建
注意:
①一个进程中的最大线程是有限制的,视具体的操作系统而定
②在工程实践中,一般线程最多为几十个。线程不宜过多,因为线程调度本身也是有成本的。
注:关于博客中的第三方库"osapi",可以通过访问http://www.afanihao.cn的共享代码模块中获
详情请参见http://www.afanihao.cn/的应用篇