因为onterminate事件是在synchronize中执行的,所以本质上它并不是线程代码,而是主线程代码(具体见后面对synchronize的分析)。
执行完onterminate后,将线程类的ffinished标志设置为true。
接下来执行signalsyncevent过程,其代码如下:
procedure signalsyncevent;
begin
setevent(syncevent);
end;
也很简单,就是设置一下一个全局event:syncevent,关于event的使用,本文将在后文详述,而syncevent的用途将在waitfor过程中说明。
然后根据freethread中保存的freeonterminate设置决定是否释放线程类,在线程类释放时,还有一些些操作,详见接下来的析构函数实现。
最后调用endthread结束线程,返回线程返回值。