Sau*_*tin 0 c++ windows winapi multithreading
我正在使用CreateThread然后使用TerminateThread来取消线程.似乎仍然分配了堆栈空间.有办法解决这个问题吗?我没有使用任何形式的动态内存调用,如malloc/new.线程不必正常退出.10个线程留下了高达5 MB的内存!线程都在代码的不同部分,因此是否有一种简单的方法来实现一个线程间通信系统,它可以告诉它们所有的优先退出,从而重新调整堆栈的方向?
xxb*_*bcc 11
在大多数情况下,你应该不使用TerminateThread().如果在应用程序中创建新线程,则您有责任确保这些线程正常退出.使用时TerminateThread(),可能会遗留所有类型的资源,因为此函数只是在不调用清理函数的情况下终止线程.
你应该做的是使用事件(或其他信号方法)告诉你的线程他们应该关闭.当线程在内部接收消息(事件发出信号或等待到期等)时,线程函数可以在内部清理并返回.这样你就可以正确地退出你的线程,而不会留下一堆乱七八糟的东西.
| 归档时间: |
|
| 查看次数: |
994 次 |
| 最近记录: |