多线程中如何清理动态内存,求教各位大神
多线程中怎么清理动态内存,求教各位大神问题是这样的,我创建了10多个线程共同完成一个相似的任务,并且每个
多线程中怎么清理动态内存,求教各位大神
问题是这样的,我创建了10多个线程共同完成一个相似的任务,并且每个线程中都有各自的动态空间分配。如果其中有一个线程完成了任务,那我就需要马上退出线程,同时终止其他所有线程,并且要释放它们相应的动态空间。
由于线程都涉及多循环,所以我不想通过互斥判断共享变量来实现,那样会极大降低效率。有没有其他什么办法能解决啊?
[解决办法]
不会有问题。你的代码里出现同步问题,不会造成什么不良影响。
1 多个线程同时执行bFind = true,bFind多次被赋为true,结果还是ture,没什么问题。
2 A线程在运行if(bFind)时,B线程将bFind改为true。A线程这回没进if,下回进if。也没什么影响
[解决办法]不要企图优雅的结束(因为这是不可能办到的)
而要在烂的不能再烂的摊子上也能重整河山!
进程退出时,操作系统会自动释放该进程申请的所有资源(包括内存、句柄、线程、USER对象、GDI对象、……;但不包括象磁盘空间这类资源)
参考《深入解析Windows操作系统-Windows Internals》进程管理
[解决办法]楼主是整个程序都要退出,担心什么清理内存的
lz难道是当1个线程退出后,就掉TerminateThread 强杀其他线程?这么做太危险了吧。
是啊,因为一个线程完成后,其他线程的工作已经没意义……所以直接Exit,在exit前得清内存
另外,exit不是直接退出程序么?那就不能考虑清内存了,系统自动清。
动态new的空间也自动清??
进程都退出了,当然动态new的空间也没有了。内存泄漏这种事只有那种需要长期跑的程序才需要担心。楼主你这种用完就退出整个程序的代码不用担心内存泄漏这回事。除非你在程序没退出前就把内存耗光了