在面向对象的编程中,多线程程序一般会视每一个线程为一个对象,对象的生命期和线程的运行周期一致。
那么如果在这个线程的某个调用中delete这个对象,那么造成的影响是什么?
对象的方法在对象被delete的时候,其内存也被释放,所以不能对一个析构了的对象调用其方法,否则会出现内存错误。同样,如果这个线程对象试图delete自己,那么必须是对该对象的最后一次调用的最后一个语句,否则就会出现问题。
多线程程序派生的线程对象大部分是为了处理某些并行的类似任务,当它们处理完任务的时候自行delete自己,这是没有问题的。
如果需要有管理器来终止线程对象,那么不应该直接delete它们,而是终止线程。一般上,线程终止的时候就是线程对象应该销毁的时候,此时它适当的delete掉自己。