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 平台的文件传输软件的设计与实现

Android员工请假系统设计

基于Linux的员工管理系统的设计与实现

asp.net+sqlserver公司员工管理系统的设计与实现

ASP.NET+Bootstrap企业员工考勤系统设计+源代码

Java+MYSQL企业员工信息管理系统设计+源代码

jsp+mysql员工管理系统设计+源代码

java企业员工信息管理系统设计+源代码+答辩PPT

STC89C52单片机NRF24L01的无线病房呼叫系统设计

基于Joomla平台的计算机学院网站设计与开发

浅论职工思想政治工作茬...

上海居民的社会参与研究

AES算法GPU协处理下分组加...

酵母菌发酵生产天然香料...

从政策角度谈黑龙江對俄...

浅谈高校行政管理人员的...

提高教育质量,构建大學生...

压疮高危人群的标准化中...