mig*_*jek 4 delphi tthread terminate fastmm
我的应用程序是一个tcp/ip服务器,主线程只创建一次并且一直在监听.当新客户端连接时,主线程创建TClientThread类型的新线程.但是没有运行客户端线程的列表,因为这会使我的应用程序有点复杂...有没有办法在所有线程上执行"terminate"方法,即使线程忙(在我的情况下"忙")意味着它正在等待数据,超时设置大约是30秒......所以无论如何我都要杀掉它,而不是等待.)?简单的关闭应用程序似乎不会在线程上运行"terminate"方法,最终会导致FastMM报告内存泄漏...
Bar*_*lly 17
关机时的内存泄漏无需担心 - 在将控制权返回到操作系统之前解决内存泄漏的麻烦是浪费时间并且不必要地减慢应用程序退出的速度.您真正需要做的就是确保已保存所有数据,并正确释放所有进程间句柄(如信号量和互斥量),然后退出.
为了通知客户,您可以做的最好的策略是这样的策略:
TEvent如果服务器正在关闭,则从列表中删除最后一项设置事件(手动重置事件,例如在SyncObjs中)select或等效的超时)或其他类型的中断(例如SO_RCVTIMEO/SO_SNDTIMEO),否则将是长时间运行的阻塞例程,监视Terminated属性Terminate,然后等待事件发出信号; 当然,在遍历列表之前,应该关闭将列表添加到列表中的侦听套接字并且已知它是已关闭的| 归档时间: |
|
| 查看次数: |
5729 次 |
| 最近记录: |