1)全部由线程函数产生的C++对象都能正确地调用它们的析构函数,从而实现内存资源的释放。
2)操作系统将正确的释放线程运行栈所使用的内存。
3)在线程文护的内核对象中有退出代码成员,系统会把其设定为线程函数的返回值[8]。
4)系统将该线程内核对象的使用计数递减
1. ExitThread函数
此函能够在调用后强制结束线程的运转。操作系统资源的清理任务将由操作在此函数调用后完成。可是,它无法回收C++资源,比如类对象。一般情况下,这种方式是Windows调用来撤销线程。
2. TerminateThread函数
此函数与ExitThread不同,虽然它也能让线程终止,但是它能够终止任何线程,而ExitThread函数只能终止调用的线程。而且TerminateThread函数是异步运行的,在你调用此函数终止线程时,此函数不能确保线程在函数返回时能被终止。TerminateThread函数 强制终止线程,几乎没给线程做结束处理工作的时间。这将导致线程不能够在结束前释放占有的资源。该函数不会向目标线程发送终止信号,而是直接在核心终止线程。这个带来的另一个后果就是内存泄露,因为线程的堆栈得不到释放。
根据上面的讨论,本设计选择使用方法1,具体如下。在程序代码中建立一个标号,通过判断它的值来让线程结束自身。这个技术有十分明显的优点,可以保证目标线程在结束之前有安全而一致的状态。它有个明显的缺点:线程必须通过问询方式,不时地检测标号值,从而判断是否该结束自身。本设计不会忙等的循环来检测标号值,本设计中采取的做法是使用一个手动重置(manual-reset)的event  对象。工作线程功过检测该event对象的状态采取相应的操作。
2.5 MFC连接SQL SERVER(ODBC方式)
在ODBC中,应用程序不能直接对数据库进行访问,它必须通过使用数据源名(DSN)通过ODBC管理器和数据库交换信息。
所谓数据源就是数据库位置,数据库类型以及ODBC驱动程序等信息的集合。数据源负责将运行结果送回应用程序[9]。
上一篇:JSP图书馆座位管理系统设计+文献综述
下一篇:基于Android 平台的文件传输软件的设计与实现

电子商务行业基层员工胜...

企业员工的信息安全意识及其培养路径探析

RFID员工考勤系统设计+源代码

java+mysql企业员工管理系统设计

java企业员工培训机构管理系统的设计

C#+sqlserver公司员工工资管理系统设计+源代码

SpringMVC及云服务的企业员...

C#学校科研管理系统的设计

中国学术生态细节考察《...

承德市事业单位档案管理...

AT89C52单片机的超声波测距...

公寓空调设计任务书

医院财务风险因素分析及管理措施【2367字】

神经外科重症监护病房患...

10万元能开儿童乐园吗,我...

国内外图像分割技术研究现状

志愿者活动的调查问卷表