win32多线程程序设计 3个问题,求解答
1.在主线程中调用ExitThread()也可以,那会导致主线程结束而"worker线程"继续存在。这会跳过runtime
library中的清理函数,因为没有将已开启的文件清理掉。
问题:
1)主线程结束,程序不就退出了吗?文件不也被清理了吗?
2)进程结束,也是将引用计数减1吗?如果引用计数减1还不为0,那这块内存岂不是一直被占用着?
2.引用计数机制保证新的线程有个地方可以写下返回值。也保证线程能读取那个返回值--只要它没有调用
CloseHandle()。
问题:解释下这句。
3.若一个进程没有在结束之前针对它所打开的核心对象调用CloseHandle(),操作系统会自动把哪些对象的引用计
数下降1.虽然你可以依赖系统做实体上的清除工作,然而逻辑上的清除工作又是完全不同的一回事,特别是如果你
又多个进程的话。因系统并不知道实际对象代表什么意义,所以它不可能知道析构顺序是否重要。
问题:解释下什么叫逻辑上的清除工作,跟析构顺序有什么关系。
[解决办法]
主线程结束 则子线程肯定随之结束;