最后要说明的是,event和criticalsection都是操作系统资源,使用前都需要创建,使用完后也同样需要释放。如tthread类用到的一个全局event:syncevent和全局criticalsection:theadlock,都是在initthreadsynchronization和donethreadsynchronization中进行创建和释放的,而它们则是在classes单元的initialization和finalization中被调用的。
由于在tthread中都是用api来操作event和criticalsection的,所以前面都是以api为例,其实delphi已经提供了对它们的封装,在syncobjs单元中,分别是tevent类和tcriticalsection类。用法也与前面用api的方法相差无几。因为tevent的构造函数参数过多,为了简单起见,delphi还提供了一个用默认参数初始化的event类:tsimpleevent。